【问题标题】:Empty cursor from the MediaStoreMediaStore 中的空光标
【发布时间】:2023-03-07 20:27:01
【问题描述】:

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

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 图书播放器(我猜他们只是遍历文件夹并进行自己的 id3 解析)和股票 android 音乐播放器都能找到音乐,但我无法从 mediastore 获得任何东西。不存在“.nomedia”文件,我尝试将新的 mp3 文件插入新文件夹。

【问题讨论】:

    标签: android mediastore


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我对回复投了赞成票,仅仅是因为您努力寻找这个问题并在此处发布您的解决方案。
    【解决方案2】:

    我遇到过类似的情况,发现了几个答案,但没有一个是令人满意的。

    媒体扫描器运行以响应系统触发的广播 Intent 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。

    【讨论】:

    • ingo,如果您觉得这回答了您的问题,如果您单击左侧的复选标记,它将对我的代表有所帮助...谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多