2016-04-06 5 views
1

以下のコードを使用して、アプリケーションの使用アクセスが有効かどうかを確認しています。上記のコードAppOpsManager.OPSTR_GET_USAGE_STATSは常に値0を返します(AppOpsManager.MODE_ALLOWED)

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; 
} 

常に使用方法アクセス許可が自分のアプリケーションのために無効になっているにもかかわらず、「真」の値を返します。

IMP注記:これは、バージョン5.1.1のLenovo P1a42デバイスでのみ発生します。他のすべてのデバイスでは、公式のリンクに記載されているように動作しますhttp://developer.android.com/reference/android/app/AppOpsManager.html

私のコードには何か問題がありますか?

答えて

0

この動作は「Lenovo P1a42デバイス」にのみ記載されているので、「マイデータマネージャー」アプリケーション(私のアプリケーションのような「usage_access」パーミッションを使用する)をインストールすることで確認しました。同じデバイス。

「マイデータマネージャ」アプリケーションは、デバイスにアプリケーションネットワークの使用状況を表示するために、「usage_access」権限を有効にするようにユーザーに求めます。しかし、 "Lenovo P1a42 device"では、このアプリケーションは、その許可が与えられていなくても、 "usage_access"許可を有効にするようにユーザに促されません。

このテストでは、「Lenovo P1a42デバイス」自体の問題が終わったと思います。

+0

この問題はLGデバイスでも発生しています。:-( – Sharas

関連する問題