2010-04-13 3 views
10

Ich möchte die Mitglieder einer bestimmten Playlist abfragen. Ich habe die richtige Playlist-ID und möchte mit managedQuery() die betreffenden Playlist-Mitglieder anzeigen.Was ist das String-Argument 'volumeName' von MediaStore.Audio.Playlists.Members.getContentUri, auf das Bezug genommen wird?

Was ich habe, ist dies:

private String [] columns = { 
    MediaStore.Audio.Playlists.Members.PLAYLIST_ID, 
    MediaStore.Audio.Playlists.Members.TITLE, 
    }; 
Uri membersUri = MediaStore.Audio.Playlists.Members.getContentUri(volume, playlistId); 
Cursor tCursor = managedQuery(membersUri, columns, null, null, null); 

Ich weiß nicht, was das Volumen Argument sein muss. Ich habe es versucht: MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI.toString() für das "Volumen" -Argument.

Das bin ich wieder einen gültigen Inhalt URI gibt, die wie folgt aussieht:

content://media/external/audio/playlists/2/members 

jedoch mein Cursor zurück null geht. Ich bin wahrscheinlich weit weg von der Basis - ich weiß, was ich tun möchte, ist sehr einfach.

+0

Ich habe die Dinge eingegrenzt - ich glaube "external" ist das Argument, das ich suche. Ich denke es ist, da ich jeden falschen String verwenden kann und den gleichen Null-Cursor bekommen kann, aber mit externem sieht der URI korrekt aus (wie oben, es sieht so aus, als hätte ich die Version eingefügt, als ich "external" benutzt habe). Auch bei "extern" bekomme ich ein anderes Verhalten. Ich erhalte beim Aufruf von managedQuery eine NullPointerException mit einer sehr unvorteilhaften Stack-Trace. bei android.content.ContentResolver.query (ContentResolver.java:149) bei android.app.Activity.managedQuery (Activity.java:1499) – Brett

Antwort

8

Der String „extern“ funktioniert als das Volumen in MediaStore.Audio.Playlists.Members.getContentUri(volume, playlistId)

Diese Aktivität druckt die Songs auf einem Android-Gerät, und die Wiedergabelisten und deren Inhalte.

import android.app.Activity; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.util.Log; 

public class PlaylistActivity extends Activity { 
    private final String [] STAR= {"*"}; 
    private final String TAG= "list"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.main); 

     Log.i(TAG, "All the titles"); 
     Uri allaudio_uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
     Cursor ca= managedQuery(allaudio_uri, STAR, null,null,null); 
     for(ca.moveToFirst(); !ca.isAfterLast(); ca.moveToNext()){ 
      if(ca.isFirst()){ // print all the fields of the first song 
       for(int k= 0; k<ca.getColumnCount(); k++) 
        Log.i(TAG, " "+ca.getColumnName(k)+"="+ca.getString(k)); 
      }else{    // but just the titles of the res 
       Log.i(TAG, ca.getString(ca.getColumnIndex("title"))); 
      } 
     } 
     Log.i(TAG, "--------------------------"); 
     Log.i(TAG, "All the playlists"); 
     Uri playlist_uri= MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;  
     Cursor cursor= managedQuery(playlist_uri, STAR, null,null,null); 
     cursor.moveToFirst(); 
     for(int r= 0; r<cursor.getCount(); r++, cursor.moveToNext()){ 
      Log.i(TAG, "-----"); 
      Log.i(TAG, "Playlist " + cursor.getString(cursor.getColumnIndex("name"))); 
      for(int k= 0; k<cursor.getColumnCount(); k++)   
       Log.i(TAG, cursor.getColumnName(k)+"="+cursor.getString(k)); 

      // the members of this playlist 
      int id= cursor.getInt(0); 
      Uri membersUri = MediaStore.Audio.Playlists.Members.getContentUri("external", id); 
      Cursor membersCursor = managedQuery(membersUri, STAR, null, null, null); 
      membersCursor.moveToFirst(); 
      for(int s= 0; s<membersCursor.getCount(); s++, membersCursor.moveToNext()) 
       Log.i(TAG, " "+membersCursor.getString(membersCursor.getColumnIndex("title"))); 
      membersCursor.close(); 
     } 
     cursor.close(); 
    } 
} 
+9

beantwortet nicht wirklich die Frage. Was ist das Volumen? Was sind die möglichen Werte außer "extern"? Worauf bezieht sich "external" - ist es das gleiche wie das "external", das in http://developer.android.com/guide/topics/data/data-storage.html verwendet wird? Etc. – Yang

+0

Danke, genau wonach ich gesucht habe. – Gaurav

Verwandte Themen