2011-11-24 16 views
5

Sto usando il seguente codice per rimuovere un elemento da una playlist nella mia app Android:Alternativa a MediaStore.Playlists.Members.moveItem

private void removeFromPlaylist(long playlistId, int loc) 
{ 
    ContentResolver resolver = getApplicationContext().getContentResolver(); 
    Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId); 
    resolver.delete(uri, MediaStore.Audio.Playlists.Members.PLAY_ORDER+" = "+loc, null); 
    for(int i=loc+1;i<playSongIDs.length;i++) { 
     MediaStore.Audio.Playlists.Members.moveItem(resolver,playlistId,i, i-1); 
    } 
} 

Attualmente sto usando la libreria Android 2.2 e questo è l'unica cosa che ho bisogno di cambiare per utilizzare Android 2.1. Esiste un metodo alternativo per rimuovere un elemento da una playlist e regolare l'ordine degli articoli dopo quello eliminato?

risposta

1

guardando il codice del MediaStore siamo venuti fuori con questa soluzione che sembra funzionare bene:

/** 
* Convenience method to move a playlist item to a new location 
* @param res The content resolver to use 
* @param playlistId The numeric id of the playlist 
* @param from The position of the item to move 
* @param to The position to move the item to 
* @return true on success 
*/ 
private boolean moveItem(ContentResolver res, long playlistId, int from, int to) { 
    Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", 
      playlistId) 
      .buildUpon() 
      .appendEncodedPath(String.valueOf(from)) 
      .appendQueryParameter("move", "true") 
      .build(); 
    ContentValues values = new ContentValues(); 
    values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, to); 
    return res.update(uri, values, null, null) != 0; 
}