在安卓6.0之後有一些權限是要在運行的時候,當用到了該權限的時候,提示用戶是否允許該權限,如果用戶允許纔開始使用該權限,如果用戶拒絕,就使用不了相應的權限,那麼問題來了,用戶拒絕後,再次使用該功能,如何去檢測是否擁有該權限呢,如檢測出沒有如何去設置呢?
檢測是否註冊了該權限
PackageManager pm = context.getPackageManager();
boolean flag = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.ACCESS_COARSE_LOCATION", "包名"));
if (flag)
{ //有這個權限,做相應處理
Toast.makeText(context, "有註冊權限", 0).show();
return true;
}
else
{ //沒有權限
Toast.makeText(context, "沒有註冊權限", 0).show();
return false;
}
這個是判斷清單文件當中有沒有申請該權限,如果有就返回true,如果沒有就返回false
檢測用戶是否手動關閉或拒絕了相應的權限,該方法只能在安卓6.0及以上的系統上才能生效,以下的系統在安裝的時候就已經允許了所有的權限,但是國產改造後的安卓系統在6.0以下在第一次運行的時候也會提示時候允許該權限,或者也可以手動的禁止該權限,對於改造後的6.0以下的系統,權限檢測是不起重用的,除非使用相應廠商的API。
public boolean selfPermissionGranted(Context context,String permission) {
boolean result = true;
if (Build.VERSION.SDK_INT >= 23) {//Build.VERSION_CODES.M
if (1 >= 23) {
result = context.checkCallingOrSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;
} else {
result = PermissionChecker.checkSelfPermission(context, permission)
== PermissionChecker.PERMISSION_GRANTED;
}
}
return result;
}
這個是在清單文件已經註冊了,但是在6.0以後第一次運行的時候,系統提示是否允許該(定位)權限,如果用戶點了否的話,定位功能就不起作用了,如果你的編譯目標版本是6.0之前的不會出現報錯現象,如果你的編譯目標版本是6.0及之後,權限拒絕,在使用定位功能區地位就會報錯,所以要去判斷一下,地位權限是否被用戶拒絕了,如果拒絕了,提示用戶去打開相應的權限才能使用該功能。
那麼如何用代碼跳轉到設置權限的頁面呢,因爲對於用戶來說,大多數人肯定都是不知道怎麼去設置,所有這些就留給程序員來提供一鍵跳轉的功能
/**
* 跳轉到該應用的設置應用詳情界面,權限管理->去設置權限
*/
private void getAppDetailSettingIntent() {
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= 9) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName("com.android.settings","com.android.settings.InstalledAppDetails");
localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());
}
startActivity(localIntent);
}
PermissionChecker類所在包下載:CSDN
Android中的各種訪問權限Permission含義:http://www.cnblogs.com/shiwei-bai/p/4916794.html