简单介绍下Android6.0以上的动态权限如何申请,如下所示:
一.以读取文件的权限申请为例,直接贴出代码:
private static final String[] PERMISSIONS_NAME = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
private static final int REQUEST_CODE = 1;
/**
* 检查读写权限
*/
private void checkRequestPermission() {
int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
//没有申请相应的权限就进行权限的申请,如下所示:
ActivityCompat.requestPermissions(this, PERMISSIONS_NAME, REQUEST_CODE);
} else {
//进行别的逻辑或者直接return
return;
}
}
/**
* 弹出申请读写权限弹框相关的回调
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//权限已经申请完毕后走的逻辑,可以直接return
} else {
//拒绝了相应的权限之后所走的逻辑,例如下面:
Toast.makeText(this, "你没有同意相应的权限",Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}