Как обновить медиа базу данных Android - PullRequest
7 голосов
/ 09 марта 2011

Мое приложение показывает список песен на SD-карте, и есть возможность удалить песню с SD-карты.

Даже когда песня удалена, она все равно появляется в моем списке приложений.

Как мне обновить базу данных мультимедиа Android и показать обновленную базу данных?

Ответы [ 4 ]

20 голосов
/ 09 марта 2011

Android имеет своего рода кеш, который отслеживает медиа-файлы.

Попробуйте это:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

Он снова запускает службу MediaScanner, которая должна удалить удаленную песню из кэша устройства.

Вам также необходимо добавить это разрешение в свой AndroidManifest.xml:

<intent-filter>
  <action android:name="android.intent.action.MEDIA_MOUNTED" />
  <data android:scheme="file" /> 
</intent-filter>
4 голосов
/ 12 июня 2014

Обновление галереи, включая Android KITKAT

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        File f = new File("file://"+ Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.sendBroadcast(mediaScanIntent);
}
else
{
       sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
} 
4 голосов
/ 11 июля 2012

Для Android до ICS отправьте ACTION_MEDIA_MOUNTED трансляцию:

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));

Для ICS и Jelly Bean можно использовать API MediaScannerConnection для сканирования медиа-файлов

1 голос
/ 06 июня 2012

Ниже тестировалось только на эмуляторах. Решение работает на 2.2 и 2.3, но не на 4. На 4-м эмуляторе Android это действие ничего не делает с сообщением в LogCat:

Отказ в разрешении: намерение вещания

К сожалению не нашел способа обновить хранилище мультимедиа для Android 4 Не тестировал на Android 3.

Ошибка происходит также в образе Intel 2.3.3. Не проверять на реальных устройствах.

...