MediaStore:查询未返回所有歌曲

时间:2018-12-18 11:12:06

标签: android android-sqlite android-cursor mediastore

我的应用程序中有一个标签,其中列出了所有可用的歌曲。但是,我收到一些用户的抱怨,即文件管理器中可见的某些歌曲没有显示。这是我使用的游标

public static Cursor getAllSongsCursor(Context mContext){

    String selection= MediaStore.Audio.Media.DURATION + " >=" + minTimeSongLimit;

    String sortBy = SortArgFactory.getSortBy(FactoryConstants.TRACKS);


    Cursor cursor = mContext.getApplicationContext().getContentResolver().query(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            null,
            selection,
            null,
            sortBy);
    return cursor;
}

我无法弄清楚为什么此光标查询未显示所有符合选择条件的歌曲。

任何帮助将不胜感激。

(我曾尝试向不同的客户提供多个补丁,但几乎总是他们不跟进,并且它在我们所有的测试场景中都能正常工作)

1 个答案:

答案 0 :(得分:0)

您正在查询的mediaDatabase可能不被刷新(更新),因此您无法看到所请求的媒体。

您可以触发刷新媒体。 请看下面的问题。

How can I refresh MediaStore on Android?

上述问题的代码段

MediaScannerConnection.scanFile(
    context, 
    new String[]{ pathToFile1, pathToFile2 }, 
    new String[]{ "audio/mp3", "*/*" }, 
    new MediaScannerConnectionClient()
    {
        public void onMediaScannerConnected()
        {
        }
        public void onScanCompleted(String path, Uri uri)
        {
        }
    });