使用URI查询MediaStore

时间:2011-07-14 21:11:17

标签: android audio mediastore

我正试图找到一种通过uri在媒体库中查询单个文件的方法。我有一个uris列表,我想在我的应用程序中提供其他信息。

如: 内容://媒体/外部/音频/媒体/ 10

文件:///sdcard/media/audio/sample.mp3

这是我正在解决的代码。我不确定应该是什么ID?

        String[] cols = new String[] {
                MediaStore.Audio.Media._ID,
                MediaStore.Audio.Media.DATA,
                MediaStore.Audio.Media.TITLE
        };


        String where = MediaStore.Audio.Media._ID + "=" + id;

        String[] proj = { MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Video.Media.SIZE, MediaStore.Audio.Media.ALBUM };

        Cursor musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, proj, null, cols, null);

提前致谢。

2 个答案:

答案 0 :(得分:2)

好吧,我想出了这个。这是我所追求的信息的链接:

http://developer.android.com/guide/topics/providers/content-providers.html

以下是完成任务的代码:

Uri uri = Uri.parse("content://media/external/audio/media/10");
Cursor musiccursor = managedQuery(uri, null, null, null, null);

if (musiccursor.moveToFirst()) {
    String title; 
    int titleColumn = musiccursor.getColumnIndex(MediaStore.Audio.Media.TITLE); 
    title = musiccursor.getString(titleColumn);
}   

答案 1 :(得分:1)

没有必要为一列提供所有内容。试试这个:

Uri uri = Uri.parse("content://media/external/audio/media/10");
String[] columns = new String[] {MediaStore.Audio.Media.TITLE};
Cursor musiccursor = managedQuery(uri, columns, null, null, null);

if (musiccursor.moveToFirst()) {
    String title = musiccursor.getString(0);
}