diff --git a/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java b/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
index 1466cb8..37a448b 100644
--- a/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
+++ b/tests/tests/permission/src/android/permission/cts/PermissionGroupChange.java
@@ -30,7 +30,9 @@
 import android.content.Intent;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.content.res.Resources;
 import android.platform.test.annotations.SecurityTest;
+import android.support.test.uiautomator.By;
 import android.support.test.uiautomator.UiDevice;
 import android.support.test.uiautomator.UiScrollable;
 import android.support.test.uiautomator.UiSelector;
@@ -53,6 +55,7 @@
 
     private Context mContext;
     private UiDevice mUiDevice;
+    private String mAllowButtonText = null;
 
     @Before
     public void setContextAndUiDevice() {
@@ -100,8 +103,15 @@
     }
 
     protected void clickAllowButton() throws Exception {
-        mUiDevice.findObject(new UiSelector().resourceId(
-                "com.android.permissioncontroller:id/permission_allow_button")).click();
+        if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
+            if (mAllowButtonText == null) {
+                mAllowButtonText = getPermissionControllerString("grant_dialog_button_allow");
+            }
+            mUiDevice.findObject(By.text(mAllowButtonText)).click();
+        } else {
+            mUiDevice.findObject(By.res(
+                    "com.android.permissioncontroller:id/permission_allow_button")).click();
+        }
     }
 
     private void grantPermissionViaUi() throws Throwable {
@@ -174,6 +184,15 @@
         }
     }
 
+    private String getPermissionControllerString(String res)
+            throws PackageManager.NameNotFoundException {
+        Resources permissionControllerResources = mContext.createPackageContext(
+                mContext.getPackageManager().getPermissionControllerPackageName(), 0)
+                .getResources();
+        return permissionControllerResources.getString(permissionControllerResources
+                .getIdentifier(res, "string", "com.android.permissioncontroller"));
+    }
+
     private interface ThrowingRunnable {
         void run() throws Throwable;
     }
diff --git a/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt b/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
index f4f97f71..5cd5c4f 100644
--- a/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
+++ b/tests/tests/permission3/src/android/permission3/cts/BasePermissionTest.kt
@@ -21,10 +21,6 @@
 import android.content.Context
 import android.content.Intent
 import android.content.pm.PackageManager
-import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE
-import android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE
-import android.content.pm.PackageManager.MATCH_SYSTEM_ONLY
-import android.content.pm.ResolveInfo
 import android.content.res.Resources
 import android.provider.Settings
 import android.support.test.uiautomator.By
@@ -58,7 +54,7 @@
     protected val uiDevice: UiDevice = UiDevice.getInstance(instrumentation)
     protected val packageManager: PackageManager = context.packageManager
     private val mPermissionControllerResources: Resources = context.createPackageContext(
-            getPermissionControllerPackageName(), 0).resources
+            context.packageManager.permissionControllerPackageName, 0).resources
 
     @get:Rule
     val activityRule = ActivityTestRule(StartForFutureActivity::class.java, false, false)
@@ -98,23 +94,6 @@
             mPermissionControllerResources.getString(mPermissionControllerResources
                     .getIdentifier(res, "string", "com.android.permissioncontroller"))
 
-    private fun getPermissionControllerPackageName(): String {
-        val intent = Intent("android.intent.action.MANAGE_PERMISSIONS")
-        intent.addCategory(Intent.CATEGORY_DEFAULT)
-        val packageManager: PackageManager = context.getPackageManager()
-        val matches: List<ResolveInfo> = packageManager.queryIntentActivities(intent,
-                MATCH_SYSTEM_ONLY or MATCH_DIRECT_BOOT_AWARE or MATCH_DIRECT_BOOT_UNAWARE)
-        return if (matches.size == 1) {
-            val resolveInfo: ResolveInfo = matches[0]
-            if (!resolveInfo.activityInfo.applicationInfo.isPrivilegedApp()) {
-                throw RuntimeException("The permissions manager must be a privileged app")
-            }
-            matches[0].activityInfo.packageName
-        } else {
-            throw RuntimeException("There must be exactly one permissions manager; found $matches")
-        }
-    }
-
     protected fun installPackage(
         apkPath: String,
         reinstall: Boolean = false,
