Google의 목표는 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