簡體   English   中英

如何加入MediaStore.Audio.Media

[英]how to Join MediaStore.Audio.Media

嗨,我使用合並光標在列表視圖中顯示數據結果,我添加了一個索引器,並且所有功能正常,但我注意到az可以正常顯示外部數據,此后再次顯示az但現在是內部數據,因此索引“作品”,但並非如我所願,我知道mergecursor不能排序,所以我想知道我可以進行rawquery嗎? 加入MediaStore.Audio.Media.INTERNAL_CONTENT_URI和MediaStore.Audio.Media.EXTERNAL_CONTENT_UR? 如何? 我想加入,然后按Song ASC排序。 或MediaStore.Audio.Media.DEFAULT_SORT_ORDER或我如何將數組列表或其他集合轉換為光標?

當前代碼:

private Cursor getInternalAudioCursor(String selection,
    String[] selectionArgs) {
return this.getContentResolver().query(
        MediaStore.Audio.Media.INTERNAL_CONTENT_URI,
        INTERNAL_COLUMNS,
        selection,
        selectionArgs,
        MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

}

private Cursor getExternalAudioCursor(String selection,
    String[] selectionArgs) {
return this.getContentResolver().query(
        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
        EXTERNAL_COLUMNS,
        selection,
        selectionArgs,
        MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

}

Cursor c = new MergeCursor(new Cursor[] {
        getExternalAudioCursor(selection, argsArray),
        getInternalAudioCursor(selection, argsArray)});
startManagingCursor(c);

您無法執行rawQuery因為

  • MediaStore (實際上是MediaProvider )是一個ContentProvider ,而不是一個SQLiteDatabase (盡管它位於該抽象層之下)-它沒有故意提供那些SQLite操作,因為您可能有其他東西支持ContentProvider而不是SQLite數據庫。
  • internalexternal是單獨的數據庫文件,並且分別訪問。 您不能建立引用另一個文件的查詢(除非您附加了它們,因為您無權訪問該低級別文件,所以無法附加它們)

您可以構建一個MatrixCursor,在其中將兩個源游標的數據按排序順序放置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM