我使用下面的代码来检查我的应用程序是否启用了使用权限。
try {
PackageManager packageManager = context.getPackageManager();
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(context.getPackageName(), 0);
AppOpsManager appOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
int mode = appOpsManager.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS, applicationInfo.uid, applicationInfo.packageName);
return (mode == AppOpsManager.MODE_ALLOWED);
} catch (PackageManager.NameNotFoundException e) {
return false;
}
即使我的应用程序禁用了使用权限,上面的代码也始终返回“true”值。
IMP注意:这仅在具有OS版本5.1.1的Lenovo P1a42设备中发生。在所有其他设备中,它的工作方式如官方链接http://developer.android.com/reference/android/app/AppOpsManager.html
中所述设备是否有任何问题,或者我的代码中是否缺少任何条件?
答案 0 :(得分:1)
正如我已经提到的那样,这种行为仅在联想P1a42设备中被观察到,所以我通过安装"我的数据管理器"来交叉验证它。应用程序(使用" usage_access"像我的应用程序那样的权限)在同一设备中。
"我的数据管理器"应用程序还会提示用户启用" usage_access"允许在设备中显示每个应用程序的网络使用情况。但在#34;联想P1a42设备"此应用程序也没有提示用户启用" usage_access"即使未授予该权限也允许。
所以我认为这个测试结束了"联想P1a42设备"本身。