問題:
在Android M(API 23)及更高版本機(jī)器上運(yùn)行targetSdkVersion < 23的應(yīng)用時(shí),當(dāng)調(diào)用checkSelfPermission匾乓,返回值始終為PERMISSION_GRANTED,即使用戶關(guān)閉了該權(quán)限拼缝,返回值還是PERMISSION_GRANTED娱局。
解決辦法:
1咧七、獲取應(yīng)用的 targetSdkVersion 值
PackageInfo info = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(),0);
targetSdkVersion = info.applicationInfo.targetSdkVersion;
2、當(dāng)targetSdkVersion >= 23時(shí)耻涛,用mContext.checkSelfPermission檢查權(quán)限;
當(dāng)targetSdkVersion < 23時(shí),用PermissionChecker.checkSelfPermission檢查權(quán)限
PermissionChecker.checkSelfPermission(mContext,permission)
注意:要想正常使用PermissionChecker.checkSelfPermission方法瘟檩,必需依賴support v4包中的:support-core-utils-25.1.0和support-compat-25.1.0,版本號(hào)25.1.0及以上都可以墨辛,25.1.0以下會(huì)出現(xiàn)Do not find class AppOpsManagerCompat23的錯(cuò)誤。
不了解support v4版本的睹簇,可以查看support v4包介紹文章哮幢。
以上文章內(nèi)容志珍,是本人工作中的總結(jié),供大家參考柜某,有誤的地方還請(qǐng)指正。