AppOpsManager.OPSTR_GET_USAGE_STATS始终返回零值(AppOpsManager.MODE_ALLOWED)

时间:2016-04-06 11:11:24

标签: android

我使用下面的代码来检查我的应用程序是否启用了使用权限。

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

中所述

设备是否有任何问题,或者我的代码中是否缺少任何条件?

1 个答案:

答案 0 :(得分:1)

正如我已经提到的那样,这种行为仅在联想P1a42设备中被观察到,所以我通过安装"我的数据管理器"来交叉验证它。应用程序(使用" usage_access"像我的应用程序那样的权限)在同一设备中。

"我的数据管理器"应用程序还会提示用户启用" usage_access"允许在设备中显示每个应用程序的网络使用情况。但在#34;联想P1a42设备"此应用程序也没有提示用户启用" usage_access"即使未授予该权限也允许。

所以我认为这个测试结束了"联想P1a42设备"本身。