diff --git a/tests/functional/com/android/documentsui/ActivityTest.java b/tests/functional/com/android/documentsui/ActivityTest.java
index 18b1e2f..777992a 100644
--- a/tests/functional/com/android/documentsui/ActivityTest.java
+++ b/tests/functional/com/android/documentsui/ActivityTest.java
@@ -37,7 +37,7 @@
 import com.android.documentsui.base.Features;
 import com.android.documentsui.base.RootInfo;
 import com.android.documentsui.bots.Bots;
-import com.android.documentsui.bots.UiBot;
+import com.android.documentsui.files.FilesActivity;
 
 import javax.annotation.Nullable;
 
@@ -145,8 +145,7 @@
     }
 
     protected void launchActivity() {
-        final Intent intent = context.getPackageManager().getLaunchIntentForPackage(
-                UiBot.targetPackageName);
+        final Intent intent = new Intent(context, FilesActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
         if (getInitialRoot() != null) {
             intent.setAction(Intent.ACTION_VIEW);
diff --git a/tests/functional/com/android/documentsui/InspectorUiTest.java b/tests/functional/com/android/documentsui/InspectorUiTest.java
index 99d0ae0..de52250 100644
--- a/tests/functional/com/android/documentsui/InspectorUiTest.java
+++ b/tests/functional/com/android/documentsui/InspectorUiTest.java
@@ -21,7 +21,7 @@
 
 import androidx.test.filters.LargeTest;
 
-import com.android.documentsui.bots.UiBot;
+import com.android.documentsui.files.FilesActivity;
 import com.android.documentsui.inspector.InspectorActivity;
 
 @LargeTest
@@ -43,8 +43,7 @@
         if (!features.isInspectorEnabled()) {
             return;
         }
-        final Intent intent = context.getPackageManager().getLaunchIntentForPackage(
-                UiBot.targetPackageName);
+        final Intent intent = new Intent(context, FilesActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
         Uri uri = DocumentsContract.buildDocumentUri(InspectorProvider.AUTHORITY, TEST_DOC_NAME);
         intent.setData(uri);
diff --git a/tests/functional/com/android/documentsui/PickerPreviewAllTypeUiTest.java b/tests/functional/com/android/documentsui/PickerPreviewAllTypeUiTest.java
index fe5ddb3..459e9b0 100644
--- a/tests/functional/com/android/documentsui/PickerPreviewAllTypeUiTest.java
+++ b/tests/functional/com/android/documentsui/PickerPreviewAllTypeUiTest.java
@@ -16,16 +16,12 @@
 
 package com.android.documentsui;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import android.content.Intent;
 import android.provider.DocumentsContract;
 
 import androidx.test.filters.LargeTest;
 
 import com.android.documentsui.base.Shared;
-import com.android.documentsui.bots.UiBot;
 import com.android.documentsui.picker.PickActivity;
 
 @LargeTest
@@ -47,8 +43,7 @@
 
     @Override
     protected void launchActivity() {
-        final Intent intent = context.getPackageManager().getLaunchIntentForPackage(
-                UiBot.targetPackageName);
+        final Intent intent = new Intent(context, PickActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setAction(Intent.ACTION_GET_CONTENT);
         if (getInitialRoot() != null) {
diff --git a/tests/functional/com/android/documentsui/PickerPreviewTextUiTest.java b/tests/functional/com/android/documentsui/PickerPreviewTextUiTest.java
index af6a3c5..f5ac051 100644
--- a/tests/functional/com/android/documentsui/PickerPreviewTextUiTest.java
+++ b/tests/functional/com/android/documentsui/PickerPreviewTextUiTest.java
@@ -16,16 +16,12 @@
 
 package com.android.documentsui;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import android.content.Intent;
 import android.provider.DocumentsContract;
 
 import androidx.test.filters.LargeTest;
 
 import com.android.documentsui.base.Shared;
-import com.android.documentsui.bots.UiBot;
 import com.android.documentsui.picker.PickActivity;
 
 @LargeTest
@@ -47,8 +43,7 @@
 
     @Override
     protected void launchActivity() {
-        final Intent intent = context.getPackageManager().getLaunchIntentForPackage(
-                UiBot.targetPackageName);
+        final Intent intent = new Intent(context, PickActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setAction(Intent.ACTION_GET_CONTENT);
         if (getInitialRoot() != null) {
