2011-03-09 58 views
7

我的應用程序顯示SD卡中的歌曲列表,並且有一個選項可以從SD卡中刪除歌曲。如何更新Android媒體數據庫

即使當歌曲被刪除,歌曲仍會出現在我的應用程序列表中。

如何更新android媒體數據庫並顯示更新的數據庫?

回答

20

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> 
+0

感謝您的回覆,但現在我得到一個空白屏幕和日誌貓顯示03-10 02:24:08.222:錯誤/ MediaScannerService(401):無法刪除文件/data/data/com.androi d.providers.media/pause_scan我認爲代碼永遠不會到達onPostExecute的異步任務,當我把你的代碼放在doInBackground – abhishek 2011-03-09 20:56:25

+0

好的空白屏幕可能是因爲我的連接類型是磁盤驅動器。但問題仍然存在,我得到的歌曲列表,它不會更新 – abhishek 2011-03-09 21:24:41

+0

好吧,我知道了...我不能讓這個東西更難看。同時做我的東西我評論sendBroadcast的東西:)但仍然我必須再次運行應用程序,看看效果 – abhishek 2011-03-09 21:31:25

1

下面只對仿真器進行測試。 解決方案適用於2.2和2.3,但不是在4月4 Android模擬器,這個動作不做任何處理消息的logcat:

權限拒絕:廣播意圖

可惜沒找到要更新的媒體存儲的方式安卓4.0 沒有測試Android上的3

錯誤也發生在2.3.3英特爾形象。沒有檢查真實的設備。

4

對於Android的ICS之前,發送ACTION_MEDIA_MOUNTED廣播:

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

對於ICS和果凍豆,你可以使用MediaScannerConnection API掃描的媒體文件

4

畫廊刷新包括Android奇巧

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()))); 
} 
+0

不知何故,這不適合我在Android 6(棉花糖)......任何想法? – Taifun 2015-11-13 23:08:58

+1

對於棉花糖,你需要去寫到手機存儲@Taifun – 2017-05-10 14:30:38

+0

謝謝@karthikvishnukumar運行時間允許,我現在使用[該解決方案(http://stackoverflow.com/a/5815005/1545993)成功 – Taifun 2017-05-10 15:13:19