下面是完整的运行时权限申请的代码:
private static final int REQUEST_CODE_PERMISSION=0x112;
private void initPermission() {
int flag= ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA);
if(PackageManager.PERMISSION_GRANTED!=flag){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, REQUEST_CODE_PERMISSION);
}else{
alterImageNew();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (REQUEST_CODE_PERMISSION==requestCode){
switch (grantResults[0]){
case PackageManager.PERMISSION_DENIED:
boolean isSecondRequest=ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.CAMERA);
if(isSecondRequest)
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA},REQUEST_CODE_PERMISSION);
else
Toast.makeText(this, "拍照权限被禁用,请在权限管理修改", Toast.LENGTH_SHORT).show();
break;
case PackageManager.PERMISSION_GRANTED:
alterImageNew();
break;
}
}
}
如果需要显示类似于上面图片显示的Toast
提示,开发者需要在onRequestPermissionResult
回调方法中,打印拍照权限被禁用,请在权限管理修改这句话,在使用API 23应用程序编程接口开发的APP中都可以反复复制上面代码,仅将CAMERA
替换成定义的权限参数,将alterImageNew()
替换成拥有权限后要执行的代码。