普通权限暂且不表,下面只列举Android6.0以后必须进行动态申请的权限。
下面以SD卡读取权限作为例子(如果实在不懂的话可以直接复制粘贴,只需要改一下权限的名称即可):
/**
* 请求授权
*/
private void requestPermission(){
if (Build.VERSION.SDK_INT >= 23) {
int checkCallPhonePermission = ContextCompat.checkSelfPermission
(this, Manifest.permission.READ_EXTERNAL_STORAGE);
if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {
//在String[]中传入需要申请的权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
else{
//sendHomework();
//已经拥有了权限
Toast.makeText(this,"已经获取读SD卡权限",Toast.LENGTH_SHORT).show();
}
}
else {
//低版本
Toast.makeText(this,"已经获取读SD卡权限",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//sendHomework();
//获取权限成功后的处理
Toast.makeText(this,"已经成功获取读SD卡权限",Toast.LENGTH_SHORT).show();
}
else {
//showToast("fail");
//获取权限失败的处理
Toast.makeText(this,"获取读SD卡权限失败",Toast.LENGTH_SHORT).show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
对于新手来说,需要注意的是,如果你想要使用这个动态权限,除了上面这段代码之外,你还需要在项目的Manifest中注册你想要获取的权限(一般来说,只要不是危险权限,无论Android6.0前后,只要注册之后就可以直接使用了,但是危险权限,除了注册之外还需要手动的动态申请)。
另外,除了上面这段代码和注册之外,还需要在初始化之前在MainActivity中写上
requestPermission()
来调用下面写的动态申请。