Содержимое Uri: // media / external / file не существует для некоторых устройств

У меня проблема с некоторыми устройствами. Я не могу воспроизвести его на любом устройстве, но у меня довольно много отчетов о сбоях, о которых сообщают некоторые пользователи.

Именно это исключение:

java.lang.IllegalArgumentException: Unknown URL content://media/external/file at android.content.ContentResolver.delete(ContentResolver.java:1024) 

Я использую это:

Context.getContentResolver (). Delete (MediaStore.Files.getContentUri ("external"), MediaStore.Files.FileColumns.DATA + "=?", Новый String [] {путь});

После этого я вызываю MediaScannerConnection.scanFile() в родительский каталог файла, потому что он наиболее функциональный способ уведомления MediaScanner об удалении файла и способах обновления содержимого MTP. Я пробовал все другие способы, которые я нашел здесь, в stackoverflow (например, Android, как использовать MediaScannerConnection scanFile ), но ничего не работает так же хорошо, как это.

Btw. Я использую его только для API 11 и новее. Внешнее хранилище, безусловно, смонтировано.

У меня есть следующие вопросы: 1. Знаете ли вы, почему возникает это исключение? Я не хочу просто игнорировать исключение. И я не хочу удалять этот код, когда он работает неплохо для большинства устройств. 2. Знаете ли вы какой-нибудь новый надежный метод, как уведомлять MediaScanner и как немедленно обновлять содержимое MTP при удалении какого-либо файла?

Скорее всего, это связано с кэшированием устройства. Поймать исключение и игнорировать не очень приятно, но моя проблема была исправлена ​​и, похоже, работает.