在android 6.0以及sdk23以上,权限就被分为normal和dangeroushtml
Dangerous Permision:java
Permission Group | Permissions |
---|---|
CALENDAR |
|
CAMERA |
|
CONTACTS |
|
LOCATION |
|
MICROPHONE |
|
PHONE |
|
SENSORS |
|
SMS |
|
STORAGE |
危险权限设置:
int hasPermision = checkSelfPermission(Manifest.permission.CAMERA); if (hasPermision != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { AlertDialog dialog = new AlertDialog.Builder(this) .setMessage("该相册须要赋予访问存储的权限,不开启将没法正常工做, 是否受权?") .setPositiveButton("肯定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, PERMISION_ID); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); System.exit(0); } }).create(); dialog.show(); } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, PERMISION_ID); }
checkSelfPermission(Manifest.permission.CAMERA):判断权限是否被授予
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA):判断权限授予是否被拒绝,若是第一次权限授予的时候用户拒绝授予权限,再次运行这段代码时返回ture
处理权限申请回调:android
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == PERMISION_ID) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { //权限授予成功 } else { //权限授予失败 } } }
ps:若是权限在AndroidManifest中没有申请过,是不会有权限授予弹出框出来的ide