diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index c5ab2e6887b11..da494d49acd3b 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3943,6 +3943,11 @@ + + + + diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 62a055d330c81..c9dbd45c5be4d 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -22080,6 +22080,13 @@ public class ActivityManagerService extends IActivityManager.Stub activeInstr.mUiAutomationConnection = uiAutomationConnection; activeInstr.mResultClass = className; + boolean disableHiddenApiChecks = + (flags & INSTRUMENTATION_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0; + if (disableHiddenApiChecks) { + enforceCallingPermission(android.Manifest.permission.DISABLE_HIDDEN_API_CHECKS, + "disable hidden API checks"); + } + final long origId = Binder.clearCallingIdentity(); // Instrumentation can kill and relaunch even persistent processes forceStopPackageLocked(ii.targetPackage, -1, true, false, true, true, false, userId, @@ -22089,9 +22096,6 @@ public class ActivityManagerService extends IActivityManager.Stub mUsageStatsService.reportEvent(ii.targetPackage, userId, UsageEvents.Event.SYSTEM_INTERACTION); } - boolean disableHiddenApiChecks = - (flags & INSTRUMENTATION_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0; - // TODO: Temporary whitelist of packages which need to be exempt from hidden API // checks. Remove this as soon as the testing infrastructure allows to set // the flag in AndroidTest.xml.