Navigate into directory to enable granting.

Some recent changes in Android R prevent selection of the root
directory, so we need to navigate into the requested directory
before we can grant tree access.

Also make tearDown() more robust to when an Activity is missing.

Bug: 143087559
Test: atest CtsProviderUiTestCases:android.providerui.cts.MediaStoreUiTest --iterations 10
Change-Id: Ifa81d88584839102311be1bcfd5b232eb2d11bee
diff --git a/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java b/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java
index 2cc6458..1be5e10 100644
--- a/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java
+++ b/tests/providerui/src/android/providerui/cts/MediaStoreUiTest.java
@@ -112,15 +112,16 @@
             mFile.delete();
         }
 
-        final ContentResolver resolver = mActivity.getContentResolver();
-        for (UriPermission permission : resolver.getPersistedUriPermissions()) {
-            mActivity.revokeUriPermission(
-                    permission.getUri(),
-                    Intent.FLAG_GRANT_READ_URI_PERMISSION
-                        | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+        if (mActivity != null) {
+            final ContentResolver resolver = mActivity.getContentResolver();
+            for (UriPermission permission : resolver.getPersistedUriPermissions()) {
+                mActivity.revokeUriPermission(
+                        permission.getUri(),
+                        Intent.FLAG_GRANT_READ_URI_PERMISSION
+                            | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+            }
+            mActivity.finish();
         }
-
-        mActivity.finish();
     }
 
     @Test
@@ -221,6 +222,14 @@
             mTargetPackageName = getTargetPackageName(mActivity);
         }
 
+        // We started at the root of the storage device, and need to navigate
+        // into the requested directory
+        final BySelector directorySelector = By.pkg(mTargetPackageName)
+                .text(directoryName);
+        mDevice.wait(Until.hasObject(directorySelector), 30 * DateUtils.SECOND_IN_MILLIS);
+        mDevice.findObject(directorySelector).click();
+        mDevice.waitForIdle();
+
         // Granting the access
         BySelector buttonPanelSelector = By.pkg(mTargetPackageName)
                 .res(mTargetPackageName + ":id/container_save");