/**
* 请求读写权限
*/
private void checkReadPermission() {
if (ContextCompat.checkSelfPermission(mContext,
Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
//TODO 此处写第一次检查权限且已经拥有权限后的业务
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_STORAGE_PERMISSION);
} else {
Log.e(TAG, "requestPermissions");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_STORAGE_PERMISSION);
}
}
}
以上是请求读写权限的代码,请求权限后会有回调处理,如下
/**
* 检查权限后的回调
*
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case REQUEST_STORAGE_PERMISSION:
if (permissions.length != 0 && grantResults[0] != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "打开相册失败,请允许存储权限后再试", Toast.LENGTH_SHORT).show();
} else {
//TODO 请求权限弹窗 允许后回调返回的成功回调 在此写业务逻辑
}
break;
}
}