Android contentResolver插入不起作用

时间:2017-10-13 12:10:44

标签: android mysql mediastore

我会感谢一些问题的帮助。我正在尝试将歌曲添加到播放列表中,但每当我尝试使用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();
    }
}

我应该指定,这个方法用于添加播放列表(如果它不存在),如果有的话就添加歌曲,在我开始处理事件之前,如果歌曲已经存在或不存在,我应该先解决这个问题。

Snap from when debugging, up to the point I am calling bulkInsert

0 个答案:

没有答案