我会感谢一些问题的帮助。我正在尝试将歌曲添加到播放列表中,但每当我尝试使用insert或bulkInsert时,它都不起作用, 如果我使用insert我只会得到一个空行作为返回值,如果我使用bulkInsert它将抛出一个NullPointerException,(因此这基本上意味着没有插入任何行,因为bulkInsert返回插入的行数) 下面我有我使用的代码,并在我调试时快速了解我的方法状态:
public void savePlaylist(Playlist p) {
String name = p.getPlaylistName();
Uri playlistURI = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;
ContentResolver contentResolver = context.getContentResolver();
Cursor playlistCursor = contentResolver.query(playlistURI, new String[]{"*"}, null, null, null);
long playlistID = getPlaylistID(playlistCursor, name);
if (playlistID == 0)
{
ContentValues playlistValue = new ContentValues();
playlistValue.put(MediaStore.Audio.Playlists.NAME, name);
playlistValue.put(MediaStore.Audio.Playlists.DATE_MODIFIED, System.currentTimeMillis());
contentResolver.insert(playlistURI, playlistValue);
playlistID = getPlaylistID(contentResolver.query(playlistURI, new String[]{"*"}, null, null, null), name);
}
Uri insertionUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistID);
ContentValues[] rowsToAdd = new ContentValues[p.getSongs().size()];
for (int i = 0; i < p.getSongs().size(); i++) {
Song toAdd = p.getSongs().get(i);
rowsToAdd[i] = new ContentValues();
rowsToAdd[i].put(MediaStore.Audio.Playlists.Members.AUDIO_ID, toAdd.getId());
}
try {
int result = context.getContentResolver().bulkInsert(insertionUri, rowsToAdd);
if (result > 0) {
Log.d("DEBUG", "Row inserted succesfully");
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
我应该指定,这个方法用于添加播放列表(如果它不存在),如果有的话就添加歌曲,在我开始处理事件之前,如果歌曲已经存在或不存在,我应该先解决这个问题。