5

Because of the Android Privacy Changes in Android Q (API29) it's not possible to add songs to a Playlist and it throws this error message when adding a track.

java.lang.SecurityException: com.mp3player.mp3player has no access to content://media/external_primary/audio/media/117

I know that we can this catch this as a RecoverableSecurityException and grant permission for each file individually.

But this is really a hassle and i'm wondering if there is another way.

I already found a post from User @Theo with the same exact problem but without any answers.

Code for adding songs to a playlist

public void addToPlayList(Context c, long songID, long playListID, String playlistName) {

    Uri playListUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playListID);

    String[] columns = {
            MediaStore.Audio.Playlists.Members.AUDIO_ID,
            MediaStore.Audio.Playlists.Members.PLAY_ORDER,
    };

    ContentResolver resolver = c.getContentResolver();

    Cursor cursor = resolver.query(playListUri, columns, null, null, null);

    int playOrder = 0;
    if (cursor != null) {
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            playOrder = cursor.getInt(0) + 1;
        }
        cursor.close();

        ContentValues contentValues = new ContentValues();

        contentValues.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, songID);
        contentValues.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, playOrder);

        resolver.insert(playListUri, contentValues);
        resolver.notifyChange(Uri.parse("content://media"), null);
}

EDIT

Looks like the thrown Exception is not an instance of RecoverableSecurityException so how do we get access to that content?

Vince VD
  • 1,506
  • 17
  • 38

1 Answers1

-1

you can use playListUri.getpath() and solve it.

cigien
  • 57,834
  • 11
  • 73
  • 112
  • Please expand your answer with an example and explain how the solution works. See https://stackoverflow.com/help/how-to-answer – Kirby Dec 15 '21 at 20:19