chief
chief

Reputation: 95

Querying MediaStore using URIs

I'm trying to find a way to query the mediastore for individual files via a uri. I have a list of uris, for which I would like to provide additional info in my app.

Such as: content://media/external/audio/media/10

or

file:///sdcard/media/audio/sample.mp3

Here's the code I'm working around. I'm not sure what id should be?

        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);

Thanks in advance.

Upvotes: 0

Views: 3263

Answers (2)

Renate
Renate

Reputation: 811

There's no need to get everything for one column. Try this:

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);
}   

Upvotes: 1

chief
chief

Reputation: 95

Alright, I figured this one out. Here's a link to the info I was after:

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

And here's the code that gets it done:

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);
}   

Upvotes: 2

Related Questions