diff options
author | 2019-03-25 20:57:22 +0000 | |
---|---|---|
committer | 2019-03-25 20:57:22 +0000 | |
commit | fb0756fa40bad8223777d22b0f038fb1ce3050e4 (patch) | |
tree | 59c5465ab320dc78b1eab2ce6b3dcb15c8622230 | |
parent | 8ede3e816261043dc03956eec220652665fb2d18 (diff) | |
parent | 4b457c39151bddd190302acd0f8f1f2c6a6fd0f6 (diff) |
Merge "Clean up scan calls used for testing."
-rw-r--r-- | api/test-current.txt | 6 | ||||
-rw-r--r-- | core/java/android/content/Intent.java | 13 | ||||
-rw-r--r-- | core/java/android/provider/MediaStore.java | 27 |
3 files changed, 29 insertions, 17 deletions
diff --git a/api/test-current.txt b/api/test-current.txt index d3ec216fc333..9817a9747ff7 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -2150,9 +2150,9 @@ package android.provider { method @RequiresPermission(android.Manifest.permission.CLEAR_APP_USER_DATA) public static long getContributedMediaSize(android.content.Context, String, android.os.UserHandle) throws java.io.IOException; method @NonNull public static java.io.File getVolumePath(@NonNull String) throws java.io.FileNotFoundException; method @NonNull public static java.util.Collection<java.io.File> getVolumeScanPaths(@NonNull String) throws java.io.FileNotFoundException; - field public static final String EXTRA_ORIGINATED_FROM_SHELL = "android.intent.extra.originated_from_shell"; - field public static final String SCAN_FILE_CALL = "scan_file"; - field public static final String SCAN_VOLUME_CALL = "scan_volume"; + method public static android.net.Uri scanFile(android.content.Context, java.io.File); + method public static android.net.Uri scanFileFromShell(android.content.Context, java.io.File); + method public static void scanVolume(android.content.Context, java.io.File); } public final class Settings { diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 032e5acf12ed..d87171e39595 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -3115,21 +3115,14 @@ public class Intent implements Parcelable, Cloneable { * <p> * The path to the file is contained in {@link Intent#getData()}. * - * @deprecated Starting in the {@link android.os.Build.VERSION_CODES#Q} - * release, shared storage paths are sandboxed per application, - * and this broadcast cannot correctly translate those sandboxed - * paths. Callers will need to instead migrate to using - * {@link MediaScannerConnection}. + * @deprecated Callers should migrate to inserting items directly into + * {@link MediaStore}, where they will be automatically scanned + * after each mutation. */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) @Deprecated public static final String ACTION_MEDIA_SCANNER_SCAN_FILE = "android.intent.action.MEDIA_SCANNER_SCAN_FILE"; - /** @hide */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - @Deprecated - public static final String ACTION_MEDIA_SCANNER_SCAN_VOLUME = "android.intent.action.MEDIA_SCANNER_SCAN_VOLUME"; - /** * Broadcast Action: The "Media Button" was pressed. Includes a single * extra field, {@link #EXTRA_KEY_EVENT}, containing the key event that diff --git a/core/java/android/provider/MediaStore.java b/core/java/android/provider/MediaStore.java index dc5fdc0ba67c..7feeeee0f790 100644 --- a/core/java/android/provider/MediaStore.java +++ b/core/java/android/provider/MediaStore.java @@ -115,9 +115,9 @@ public final class MediaStore { */ public static final String VOLUME_EXTERNAL = "external"; - /** {@hide} */ @TestApi + /** {@hide} */ public static final String SCAN_FILE_CALL = "scan_file"; - /** {@hide} */ @TestApi + /** {@hide} */ public static final String SCAN_VOLUME_CALL = "scan_volume"; /** @@ -126,7 +126,6 @@ public final class MediaStore { * * {@hide} */ - @TestApi public static final String EXTRA_ORIGINATED_FROM_SHELL = "android.intent.extra.originated_from_shell"; @@ -3539,12 +3538,32 @@ public final class MediaStore { } /** @hide */ + @TestApi public static Uri scanFile(Context context, File file) { + return scan(context, SCAN_FILE_CALL, file, false); + } + + /** @hide */ + @TestApi + public static Uri scanFileFromShell(Context context, File file) { + return scan(context, SCAN_FILE_CALL, file, true); + } + + /** @hide */ + @TestApi + public static void scanVolume(Context context, File file) { + scan(context, SCAN_VOLUME_CALL, file, false); + } + + /** @hide */ + private static Uri scan(Context context, String method, File file, + boolean originatedFromShell) { final ContentResolver resolver = context.getContentResolver(); try (ContentProviderClient client = resolver.acquireContentProviderClient(AUTHORITY)) { final Bundle in = new Bundle(); in.putParcelable(Intent.EXTRA_STREAM, Uri.fromFile(file)); - final Bundle out = client.call(SCAN_FILE_CALL, null, in); + in.putBoolean(EXTRA_ORIGINATED_FROM_SHELL, originatedFromShell); + final Bundle out = client.call(method, null, in); return out.getParcelable(Intent.EXTRA_STREAM); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); |