6.0發(fā)布到時候,權限管理這一塊,是一個熱點。官方文檔也寫的很詳細了文檔
- 在Manifests中申請權限。
- 檢查系統(tǒng)版本
public boolean checkSDKVersion() {
return Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M;
}
- 檢查是否有權限
public boolean hasPermission(String str) { if (checkSDKVersion()) return (checkSelfPermission(str) == PackageManager.PERMISSION_GRANTED); return true;}
- 是否顯示權限說明
//在第一次安裝的時候,這個方法會反悔false,因此你可以直接請求權限,如果用戶以前拒絕過一個權限的請求,那么再次請求該權限的時候可以顯示一個解釋該請求用途的的信息。
boolean b = shouldShowRequestPermissionRationale(Manifest.permission.WRITE_EXTERNAL_STORAGE); if (b) {//是否需要顯示說明,,為什么需要給權限的對話框 Toast.makeText(this, "我就是要這個權限,你要給我", Toast.LENGTH_LONG).show(); } requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
- 回調處理
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
//請求標示
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//授權成功
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
//授權失敗
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request }}
查看permission
adb shell pm list permissions -d -g
危險權限,分組查看