Я смог собрать метод, используя кусочки из этих двух вопросов
- Что такое аргумент String 'volumeName' MediaStore.Audio.Playlists.Members.getContentUri, ссылающийся на?
- Как обновить MediaStore на Android?
По сути, я просто запускаю запрос для каждого из типов хранилищ мультимедиа (аудио, видео и изображений), выбирая по пути и удаляя все найденные записи.
public static void RemoveAllForPaths(String[] paths, Context context)
{
private static final String[] FIELDS = { MediaStore.MediaColumns._ID, MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.TITLE };
if(paths == null || paths.length == 0) return;
String select = "";
for(String path : paths)
{
if(!select.equals("")) select += " OR ";
select += MediaStore.MediaColumns.DATA + "=?";
}
Uri uri;
Cursor ca;
uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
ca = context.getContentResolver().query(uri, FIELDS, select, paths, null);
for(ca.moveToFirst(); !ca.isAfterLast(); ca.moveToNext()){
int id = ca.getInt(ca.getColumnIndex(MediaStore.MediaColumns._ID));
uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);
context.getContentResolver().delete(uri, null, null);
}
ca.close();
// More of the same just setting the URI to Video and Images
}
Я не совсем уверен, насколько это безопасно, но это единственное решение, которое я нашел до сих пор, и некоторые первоначальные испытания, похоже, работают. Я приглашаю других представить другие ответы, если у кого-либо есть какая-либо дополнительная информация об этом подходе или более эффективном методе для выполнения этой функции.