So erstellen Sie eine neue Wiedergabeliste mit ContentResolver

Ich versuche, eine neue zu erstellen Playlist mit Android ContentResolver werden Hinzugefügt Musik-player-Wiedergabelisten, aber wenn der code ausgeführt wird, wird das einfügen in die playlist gibt null (für die Uri) und wenn ich den Musik-player-Wiedergabelisten, meine neue Playlist Eintrag gibt es nicht. Ich vermute, dass der Grund dafür, dass die insert() null zurückgegeben ist, weil ich noch nicht erstellt, die Playlist richtig. Könnte jemand klären, wie Sie dynamisch erstellen Sie eine neue Wiedergabeliste, gegeben, dass mein code nicht funktioniert. (In meiner Suche, die ich gefunden habe, mehrere Wege, um Abfrage-Playlisten, aber nichts tatsächlich eine neue erstellt)

Hier ist mein code...

    ContentResolver resolver = getActivity().getContentResolver();

    Uri playlists = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;

    Log.d(A.TAG, "Checking for existing playlist for " + chart.getName());
    Cursor c = resolver.query(playlists, new String[] {"*"}, null, null, null);
    long playlistId = 0;
    c.moveToFirst();
    do {
        String plname = c.getString(c.getColumnIndex(MediaStore.Audio.Playlists.NAME));
        if (plname.equalsIgnoreCase(chart.getName())) {
            playlistId = c.getLong(c.getColumnIndex(MediaStore.Audio.Playlists._ID));
            break;
        }
    } while (c.moveToNext());
    c.close();

    if (playlistId!=0) {
        Uri deleteUri = ContentUris.withAppendedId(playlists, playlistId);
        Log.d(A.TAG, "REMOVING Existing Playlist: " + playlistId);

        //delete the playlist
        resolver.delete(deleteUri, null, null);
    }

    Log.d(A.TAG, "CREATING PLAYLIST: " + chart.getName());
    ContentValues v = new ContentValues();
    v.put(MediaStore.Audio.Playlists.NAME, chart.getName());
    v.put(MediaStore.Audio.Playlists.DATE_MODIFIED, System.currentTimeMillis());
    Uri newpl = resolver.insert(playlists, v);
    Log.d(A.TAG, "Added PlayLIst: " + newpl);

    Uri insUri = Uri.withAppendedPath(newpl, MediaStore.Audio.Playlists.Members.CONTENT_DIRECTORY);

    int order = 1;
    Log.d(A.TAG, "Playlist Members Url: " + insUri);
    c = getContentManager().queryWhere(getActivity(), Song.class, Song.Fields.LIBRARYID + " != 0 and " + Song.Fields.CHARTID + " = " + chart.getId(), (String[])null);
    if (c.moveToFirst()) {
        Log.d(A.TAG, "Adding Songs to PlayList **");
        do {
            long id = c.getLong(c.getColumnIndex(Song.Fields.LIBRARYID));
            ContentValues cv = new ContentValues();
            cv.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, order++);
            cv.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, id);
            Uri u = resolver.insert(insUri, cv);
            Log.d(A.TAG, "Added Playlist Item: " + u + " for AUDIO_ID " + id);
        } while (c.moveToNext());
    }
    c.close();

UPDATE: Teilweise Gelöst **

Den oben aufgeführten code nicht richtig fügen Sie eine neue Wiedergabeliste auf 4.0.3, aber nicht auf 2.3. Das einzige problem, das Bereiche für 4.0.3 war, dass ich brauchte, um sicherzustellen, dass die DATE_MODIFIED wurde auf der Playlist PLAY_ORDER wurde auf der Playlist-item.

Habe ich noch keine Ahnung, warum wäre es nicht eine playlist erstellen, die auf 2.x, also wenn jemand irgendwelche Gedanken auf, dass, würde ich mag wissen.

InformationsquelleAutor stuckless | 2012-06-10
Schreibe einen Kommentar