diff --git a/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/BasePackageInstallTest.java b/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/BasePackageInstallTest.java
old mode 100644
new mode 100755
index f994e9e..1d1760d
--- a/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/BasePackageInstallTest.java
+++ b/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/BasePackageInstallTest.java
@@ -15,6 +15,7 @@
  */
 package com.android.cts.packageinstaller;
 
+import android.net.Uri;
 import android.app.PendingIntent;
 import android.app.admin.DevicePolicyManager;
 import android.content.BroadcastReceiver;
@@ -57,6 +58,7 @@
     protected boolean mCallbackReceived;
     protected int mCallbackStatus;
     protected Intent mCallbackIntent;
+    public static String instllerPkgName="";
 
     protected final Object mPackageInstallerTimeoutLock = new Object();
 
@@ -88,6 +90,10 @@
                 mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
         mPackageManager = mContext.getPackageManager();
         mPackageInstaller = mPackageManager.getPackageInstaller();
+        Intent intent=new Intent("android.intent.action.INSTALL_PACKAGE");
+        intent.setData(Uri.parse("package:"));
+        instllerPkgName = mPackageManager.queryIntentActivities(
+                intent, PackageManager.MATCH_DEFAULT_ONLY).get(0).activityInfo.packageName;
         assertNotNull(mPackageInstaller);
 
         // check that app is not already installed
diff --git a/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/ManualPackageInstallTest.java b/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/ManualPackageInstallTest.java
old mode 100644
new mode 100755
index 96affae..438a7e2
--- a/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/ManualPackageInstallTest.java
+++ b/hostsidetests/devicepolicy/app/PackageInstaller/src/com/android/cts/packageinstaller/ManualPackageInstallTest.java
@@ -30,18 +30,9 @@
     private static final int AUTOMATOR_WAIT_TIMEOUT = 5000;
     private static final int INSTALL_WAIT_TIME = 5000;
 
-    private static final BySelector POPUP_BUTTON_SELECTOR = By
-            .clazz(android.widget.Button.class.getName())
-            .res("android:id/button1")
-            .pkg("com.google.android.packageinstaller");
-    private static final BySelector POPUP_TEXT_SELECTOR = By
-            .clazz(android.widget.TextView.class.getName())
-            .res("android:id/alertTitle")
-            .pkg("com.google.android.packageinstaller");
-    private static final BySelector INSTALL_BUTTON_SELECTOR = By
-            .clazz(android.widget.Button.class.getName())
-            .res("com.android.packageinstaller:id/ok_button")
-            .pkg("com.google.android.packageinstaller");
+    private static BySelector POPUP_BUTTON_SELECTOR = null;
+    private static BySelector POPUP_TEXT_SELECTOR = null;
+    private static BySelector INSTALL_BUTTON_SELECTOR = null;
 
     public void testManualInstallSucceeded() throws Exception {
         assertInstallPackage();
@@ -99,6 +90,10 @@
     }
 
     private void automateInstallClick() {
+        if(null == INSTALL_BUTTON_SELECTOR)INSTALL_BUTTON_SELECTOR = By
+            .clazz(android.widget.Button.class.getName())
+            .res("com.android.packageinstaller:id/ok_button")
+            .pkg(instllerPkgName);
         mDevice.wait(Until.hasObject(INSTALL_BUTTON_SELECTOR), AUTOMATOR_WAIT_TIMEOUT);
         UiObject2 button = mDevice.findObject(INSTALL_BUTTON_SELECTOR);
         assertNotNull("Install button not found", button);
@@ -106,10 +101,18 @@
     }
 
     private void automateDismissInstallBlockedDialog() {
+        if(null == POPUP_TEXT_SELECTOR)POPUP_TEXT_SELECTOR = By
+            .clazz(android.widget.TextView.class.getName())
+            .res("android:id/alertTitle")
+            .pkg(instllerPkgName);
         mDevice.wait(Until.hasObject(POPUP_TEXT_SELECTOR), AUTOMATOR_WAIT_TIMEOUT);
         UiObject2 text = mDevice.findObject(POPUP_TEXT_SELECTOR);
         assertNotNull("Alert dialog not found", text);
         // "OK" button only present in the dialog if it is blocked by policy.
+        if(null == POPUP_BUTTON_SELECTOR)POPUP_BUTTON_SELECTOR = By
+            .clazz(android.widget.Button.class.getName())
+            .res("android:id/button1")
+            .pkg(instllerPkgName);
         UiObject2 button = mDevice.findObject(POPUP_BUTTON_SELECTOR);
         assertNotNull("OK button not found", button);
         button.click();
