从MediaStore清空游标

时间:2011-02-11 19:04:35

标签: android mediastore

我无法弄清楚为什么这个光标在这个特定设备中是空的。但适用于所有其他Android设备。 SD卡上有几个音频文件,股票媒体播放器可以找到并播放这些歌曲。

Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[] { "distinct " + MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM_KEY, MediaStore.Audio.Media.ALBUM_ID}, 
                null,
                null, 
                MediaStore.Audio.Media.ARTIST);

ambling book player(我猜他们只是循环浏览文件夹并进行自己的id3解析)和股票安卓音乐播放器找到音乐,但我无法从媒体商店获得任何东西。没有“.nomedia”文件,我尝试将新的mp3文件插入新文件夹。

2 个答案:

答案 0 :(得分:4)

我在HTC Incredible上遇到同样的问题而且很遗憾DJC的回答对我不起作用。 EXTERNAL_CONTENT_URI和INTERNAL_CONTENT_URI都没有给我任何图像。经过一番挖掘后,我发现通过使用以下内容URI,它确实可以在HTC Incredible上运行。

Uri contenturi = Images.Media.getContentUri("phoneStorage");

答案 1 :(得分:2)

我遇到了类似的问题,并发现了几个尚未证明令人满意的答案。

媒体扫描程序运行以响应系统触发的广播意图ACTION_MEDIA_MOUNTED, 这在启动期间发生。所以要检查的第一件事是重启。

根据我的理解,扫描仪也将在之后运行 设置>管理应用程序>媒体存储>清除数据 - 并从存储中重新填充媒体库。我试过了,它没有效果我工作..我当然不能保证安全,也不会在非开发设备上这样做。

您也可以手动

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

在观看意向广播ACTION_MEDIA_SCANNER_FINISHED时提出某种通知。

如果您要自己导入媒体,请查看MediaScannerConnection以启动扫描仪。

哦,如果您计划使用Google的Nexus等设备,则需要处理INTERNAL_CONTENT_URI。