私たちの目標は、AndroidTest(AndroidJUnit4)を使用して自動テストを実行することです。PACKAGE_USAGE_STATS権限を持つAndroidTest
SDK> = 23
public static void grantPermission(String permission) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!hasPermission(permission))
getInstrumentation().getUiAutomation()
.executeShellCommand("pm grant " + getTargetContext().getPackageName() + " " + permission);
}
}
@Before
public void setUp() throws Exception {
grantPermission("android.permission.ACCESS_NETWORK_STATE");
grantPermission("android.permission.CHANGE_NETWORK_STATE");
grantPermission("android.permission.CAMERA ");
grantPermission("android.permission.INTERNET");
grantPermission("android.permission.READ_EXTERNAL_STORAGE ");
grantPermission("android.permission.WRITE_EXTERNAL_STORAGE");
grantPermission("android.permission.PACKAGE_USAGE_STATS");
}
メソッドは
用法アクセスの設定/セキュリティ/アプリ、我々のアプリではあるがandroid.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.CAMERA
の罰金であるとき、私たちは、権限を付与するために、このコードを使用していますこのコードを使用してアクセス権を確認すると、そのアクセス権はまだありません。
AppOpsManager appOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
// return MODE_DEFAULT, not MODE_ALLOWED
int result = appOps.checkOpNoThrow("android:get_usage_stats", android.os.Process.myUid(), context.getPackageName())
この目標を達成するにはどうすればよいですか?
アクティビティを開始してユーザーがアクセス権を許可することができますが、私たちの目標は自動テストを実行することです。ユーザーが既に許可を与えていることをプログラムでシミュレーションします。 – Wade