2011-03-09 59 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