package com.jiepier.filemanager.util; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.BaseColumns; import android.provider.MediaStore; import android.provider.MediaStore.MediaColumns; import java.io.File; public abstract class MediaStoreUtils { private MediaStoreUtils() {} public static Uri getUriFromFile(final String path, Context context) { ContentResolver resolver = context.getContentResolver(); Cursor filecursor = resolver.query(MediaStore.Files.getContentUri("external"), new String[]{BaseColumns._ID}, MediaColumns.DATA + " = ?", new String[]{path}, MediaColumns.DATE_ADDED + " desc"); filecursor.moveToFirst(); if (filecursor.isAfterLast()) { filecursor.close(); ContentValues values = new ContentValues(); values.put(MediaColumns.DATA, path); return resolver.insert(MediaStore.Files.getContentUri("external"), values); } else { int imageId = filecursor.getInt(filecursor.getColumnIndex(BaseColumns._ID)); Uri uri = MediaStore.Files.getContentUri("external").buildUpon().appendPath( Integer.toString(imageId)).build(); filecursor.close(); return uri; } } public static void addFileToMediaStore(final String path, Context context) { Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File file = new File(path); Uri contentUri = Uri.fromFile(file); mediaScanIntent.setData(contentUri); context.sendBroadcast(mediaScanIntent); } }