diff options
Diffstat (limited to 'src/com/android/providers/downloads/Helpers.java')
-rw-r--r-- | src/com/android/providers/downloads/Helpers.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java index 565aa52e..f75b627f 100644 --- a/src/com/android/providers/downloads/Helpers.java +++ b/src/com/android/providers/downloads/Helpers.java @@ -34,18 +34,22 @@ import android.app.job.JobInfo; import android.app.job.JobScheduler; import android.content.ComponentName; import android.content.Context; +import android.content.Intent; import android.database.Cursor; import android.net.Uri; +import android.os.Bundle; import android.os.Environment; import android.os.FileUtils; import android.os.Handler; import android.os.HandlerThread; import android.os.Process; +import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.os.storage.StorageManager; import android.os.storage.StorageVolume; import android.provider.Downloads; +import android.provider.MediaStore; import android.text.TextUtils; import android.util.Log; import android.util.LongSparseArray; @@ -489,6 +493,26 @@ public class Helpers { throw new IOException("Failed to generate an available filename"); } + public static Uri convertToMediaStoreDownloadsUri(Uri mediaStoreUri) { + final String volumeName = MediaStore.getVolumeName(mediaStoreUri); + final long id = android.content.ContentUris.parseId(mediaStoreUri); + return MediaStore.Downloads.getContentUri(volumeName, id); + } + + // TODO: Move it to MediaStore. + public static Uri triggerMediaScan(android.content.ContentProviderClient mediaProviderClient, + File file) { + try { + final Bundle in = new Bundle(); + in.putParcelable(Intent.EXTRA_STREAM, Uri.fromFile(file)); + final Bundle out = mediaProviderClient.call(MediaStore.SCAN_FILE_CALL, null, in); + return out.getParcelable(Intent.EXTRA_STREAM); + } catch (RemoteException e) { + // Should not happen + } + return null; + } + public static boolean isFileInExternalAndroidDirs(String filePath) { return PATTERN_ANDROID_DIRS.matcher(filePath).matches(); } |