我的应用程序显示SD卡中的歌曲列表,并且有一个选项可以从SD卡中删除歌曲。如何更新Android媒体数据库
即使当歌曲被删除,歌曲仍会出现在我的应用程序列表中。
如何更新android媒体数据库并显示更新的数据库?
我的应用程序显示SD卡中的歌曲列表,并且有一个选项可以从SD卡中删除歌曲。如何更新Android媒体数据库
即使当歌曲被删除,歌曲仍会出现在我的应用程序列表中。
如何更新android媒体数据库并显示更新的数据库?
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>
下面只对仿真器进行测试。 解决方案适用于2.2和2.3,但不是在4月4 Android模拟器,这个动作不做任何处理消息的logcat:
权限拒绝:广播意图
可惜没找到要更新的媒体存储的方式安卓4.0 没有测试Android上的3
错误也发生在2.3.3英特尔形象。没有检查真实的设备。
对于Android的ICS之前,发送ACTION_MEDIA_MOUNTED广播:
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
对于ICS和果冻豆,你可以使用MediaScannerConnection API扫描的媒体文件
画廊刷新包括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())));
}
感谢您的回复,但现在我得到一个空白屏幕和日志猫显示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
好的空白屏幕可能是因为我的连接类型是磁盘驱动器。但问题仍然存在,我得到的歌曲列表,它不会更新 – abhishek 2011-03-09 21:24:41
好吧,我知道了...我不能让这个东西更难看。同时做我的东西我评论sendBroadcast的东西:)但仍然我必须再次运行应用程序,看看效果 – abhishek 2011-03-09 21:31:25