如题:禁用、询问的权限,居然还返回权限获取成功
推荐一个很好的项目: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;
}