Make MediaScannerTest work on both Q and R
Bug: 160915492
Test: run
Change-Id: I3af4bcfd7790d126e76a1db55e83c9c0820fb967
diff --git a/tests/tests/media/src/android/media/cts/MediaScannerTest.java b/tests/tests/media/src/android/media/cts/MediaScannerTest.java
index 65d1644..b4ab70b 100644
--- a/tests/tests/media/src/android/media/cts/MediaScannerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaScannerTest.java
@@ -26,6 +26,7 @@
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
import android.net.Uri;
+import android.os.Build;
import android.os.Environment;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
@@ -41,6 +42,7 @@
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
+import com.android.compatibility.common.util.ApiLevelUtil;
import com.android.compatibility.common.util.FileCopyHelper;
import com.android.compatibility.common.util.PollingCheck;
@@ -51,6 +53,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
@Presubmit
@@ -618,16 +621,30 @@
}
}
- public static void startMediaScan() {
- new Thread(() -> {
+ private static void scanVolume() {
+ if (ApiLevelUtil.isAtLeast(Build.VERSION_CODES.R)) {
MediaStore.scanVolume(InstrumentationRegistry.getTargetContext().getContentResolver(),
MediaStore.VOLUME_EXTERNAL_PRIMARY);
- }).start();
+ } else {
+ // on Q, scanVolume(Context, String path) should be used
+ try {
+ Method scanVolumeMethod = MediaStore.class
+ .getMethod("scanVolume", Context.class, File.class);
+ scanVolumeMethod.invoke(null,
+ InstrumentationRegistry.getTargetContext(),
+ Environment.getExternalStorageDirectory());
+ } catch (Exception ex) {
+ fail("could not find scanVolume method" + ex);
+ }
+ }
+ }
+
+ public static void startMediaScan() {
+ new Thread(() -> { scanVolume(); }).start();
}
public static void startMediaScanAndWait() {
- MediaStore.scanVolume(InstrumentationRegistry.getTargetContext().getContentResolver(),
- MediaStore.VOLUME_EXTERNAL_PRIMARY);
+ scanVolume();
}
private void checkMediaScannerConnection() {