當Android targetSdkVersion小於23時如何檢查許可權
阿新 • • 發佈:2019-02-01
問題:
在Android M(API 23)及更高版本機器上執行targetSdkVersion < 23的應用時,當呼叫checkSelfPermission,返回值始終為PERMISSION_GRANTED,即使使用者關閉了該許可權,返回值還是PERMISSION_GRANTED。
解決辦法:
1、獲取應用的 targetSdkVersion 值
PackageInfo info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(),0);
targetSdkVersion = info.applicationInfo.targetSdkVersion;
2、當targetSdkVersion >= 23時,用mContext.checkSelfPermission檢查許可權;
當targetSdkVersion < 23時,用PermissionChecker.checkSelfPermission檢查許可權
PermissionChecker.checkSelfPermission(mContext,permission)
注意:要想正常使用PermissionChecker.checkSelfPermission方法,必需依賴support v4包中的:support-core-utils-25.1.0和support-compat-25.1.0,版本號25.1.0及以上都可以,25.1.0以下會出現Do not find class AppOpsManagerCompat23的錯誤。