Android6.0執行時許可權,拒絕了許可權還返回獲取成功
阿新 • • 發佈:2019-01-26
如題:禁用、詢問的許可權,居然還返回許可權獲取成功
推薦一個很好的專案:AndPermission
不用回來感謝了喂!
這個問題在專案中,一直存在,
主要是第三方廠商各種改,返回的狀態不正常;
主要解決思路:
在第三方成功獲取許可權時,
再用系統原生的api去判斷一下,是否真正獲取了許可權:
/**
* 系統層的許可權判斷
*
* @param context 上下文
* @param permissions 申請的許可權 Manifest.permission.READ_CONTACTS
* @return 是否有許可權 :其中有一個獲取不了就是失敗了
*/
public static boolean hasPermission(@NonNull Context context, @NonNull List<String> permissions) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return true;
for (String permission : permissions) {
String op = AppOpsManagerCompat.permissionToOp(permission);
if (TextUtils.isEmpty(op)) continue;
int result = AppOpsManagerCompat.noteProxyOp(context, op, context.getPackageName());
if (result == AppOpsManagerCompat.MODE_IGNORED) return false;
result = ContextCompat.checkSelfPermission(context, permission);
if (result != PackageManager.PERMISSION_GRANTED) return false;
}
return true;
}