[英]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數據庫。 internal
和external
是單獨的數據庫文件,並且分別訪問。 您不能建立引用另一個文件的查詢(除非您附加了它們,因為您無權訪問該低級別文件,所以無法附加它們) 您可以構建一個MatrixCursor,在其中將兩個源游標的數據按排序順序放置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.