如何加入MediaStore.Audio.Media

时间:2012-04-19 15:37:53

标签: android mediastore

你好我使用合并光标在我的列表视图中显示数据结果,我添加了一个索引器,它的所有工作正常,但我注意到它的确定显示我的外部数据,之后再次az但现在是内部数据,所以我的索引“工作”,但不是我想要的,我知道mergecursor不能排序所以我想知道我可以做一个rawquery?加入  MediaStore.Audio.Media.INTERNAL_CONTENT_URI和MediaStore.Audio.Media.EXTERNAL_CONTENT_UR ??如何?我想加入,然后由宋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);

1 个答案:

答案 0 :(得分:0)

你不能做rawQuery,因为

  • MediaStore(实际上MediaProvider)是ContentProvider,而不是SQLiteDatabase(虽然它位于该抽象层之下) - 它不会故意提供这些SQLite操作你可以拥有支持ContentProvider而不是SQLite数据库的其他东西。
  • internalexternal是单独的数据库文件&单独访问。您无法构建引用另一个文件的查询(除非您附加了它们,因为您无法访问该低级别,因此无法附加它们)

您可以构建一个MatrixCursor,您可以在其中按顺序放置两个源游标的数据。