Ваш Uri-путь неверен, поэтому отображается сообщение об ошибке.
Недействительный путь Uri: content: //com.abc.photoapp.provider/external_files/emulated/0/Pictures/camara/1623819097267.jpg
Действительный путь: content: // media / external / images / media / 52703
Здесь я шаг за шагом объясню путь к файлу для удаления мультимедиа.
Шаг 1:
Предположим, у вас есть такой путь к файлу /storage/emulated/0/tempPic/export_image.jpg
File tempFile=new File("/storage/emulated/0/tempPic/export_image.jpg");
long mediaID=getFilePathToMediaID(tempFile.getAbsolutePath(), context);
public long getFilePathToMediaID(String songPath, Context context)
{
long id = 0;
ContentResolver cr = context.getContentResolver();
Uri uri = MediaStore.Files.getContentUri("external");
String selection = MediaStore.Audio.Media.DATA;
String[] selectionArgs = {songPath};
String[] projection = {MediaStore.Audio.Media._ID};
String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
Cursor cursor = cr.query(uri, projection, selection + "=?", selectionArgs, null);
if (cursor != null) {
while (cursor.moveToNext()) {
int idIndex = cursor.getColumnIndex(MediaStore.Audio.Media._ID);
id = Long.parseLong(cursor.getString(idIndex));
}
}
return id;
}
Шаг 2:
Создайте идентификатор мультимедиа для Uri
Uri Uri_one = ContentUris.withAppendedId( MediaStore.Images.Media.getContentUri("external"),mediaID);
// content://media/external/images/media/52703
Uri содержимого меняется в зависимости от типа файла:
Если изображение, то: MediaStore.Images.Media.getContentUri (внешний) Если видео, то: MediaStore.Video.Media.getContentUri (внешний)
Шаг 3:
Готовься и звони на удаление
List<Uri> uris=new ArrayList<>();
uris.add(<Add Paht : Uri_one >);
uris.add(<Add Paht : Uri_two >);
uris.add(<Add Paht : Uri_three >);
requestDeletePermission( context,uris);
введите здесь описание изображения После вызова метода спросите диалоговое окно разрешения. Метод requestDeletePermission возвращает результат по методу onActivityResult.
Вышеупомянутый метод поддерживает Android 11 (Target SDK версии 30) и более позднюю версию. Вам не требуется разрешение manage_external_storage для удаления медиафайлов. Вы можете использовать такие медиа, как видео, аудио и изображения.
Если вы хотите удалить файл документа, вам потребуется разрешение manage_external_storage.
person
Jatin Borsaniya
schedule
22.06.2021
mediaUri
? Ссылается ли он на конкретныйMediaStore
элемент по идентификатору? - person ianhanniballake   schedule 22.10.2020mediaUri = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
- person Feroz Khan   schedule 22.10.2020final Uri contentUri = ContentUris.withAppendedId( MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY), Long.valueOf(id));
, и ошибка исчезла. Спасибо - person Feroz Khan   schedule 22.10.2020