在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