2011-11-24 16 views
5

Używam następujący kod, aby usunąć element z listy odtwarzania w moim Android app:Alternatywa 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); 
    } 
} 

Obecnie używam biblioteki Android 2.2 i to to jedyna rzecz, którą muszę zmienić, aby używać Androida 2.1. Czy istnieje alternatywna metoda usuwania elementu z listy odtwarzania i dostosowywania kolejności elementów po usuniętej?

Odpowiedz

1

patrząc na kodzie Mediastore wyszliśmy z tego rozwiązania, które wydaje się działać prawidłowo:

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