2011-11-24 9 views
5

He estado usando el código siguiente para eliminar un elemento de una lista de reproducción en mi aplicación 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); 
    } 
} 

actualmente estoy usando la biblioteca de Android 2.2 y esto es lo único que necesito cambiar para usar Android 2.1. ¿Existe un método alternativo para eliminar un elemento de una lista de reproducción y ajustar el orden de los elementos después de la eliminada?

Respuesta

1

mirar el código de la MediaStore que salió con esta solución que parece funcionar bien:

/** 
* 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; 
}