2

I have a music player app for Android. There is a strange issue with MediaStore. I can delete or add songs to my own playlists on MediaStore (eg, created by my app). However, when I try to add a song to a playlist created by another application, it throws java.lang.SecurityException, but I can delete songs from the exact same playlist!

I have all required permissions:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

And my code:

public Uri addTrackToPlaylist(Context context, TrackLocal trackLocal, long playlist_id, int pos) {
    ContentResolver resolver = context.getContentResolver();
    Uri newuri = MediaStore.Audio.Playlists.Members.getContentUri(getVolume(), playlist_id);
    ContentValues values = new ContentValues();
    values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, 0);
    values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, trackLocal.dbid);
    Uri uri = resolver.insert(newuri, values);
    return uri;
}

public int deletePlaylistTrack(Context context, long playlistId, TrackLocal trackLocal) {
    ContentResolver resolver = context.getContentResolver();
    Uri uri = MediaStore.Audio.Playlists.Members.getContentUri(getVolume(), playlistId);
    String filter = MediaStore.Audio.Playlists.Members.AUDIO_ID + " = " + trackLocal.dbid;
    return resolver.delete(uri, filter, null);
}

private String getVolume() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        return MediaStore.VOLUME_EXTERNAL;
    } else {
        return "external";
    }
}

Does anyone have an idea at least how to workaround this?

Thanks.

EvanBlack
  • 759
  • 8
  • 25
  • I have been trying for a long time [https://stackoverflow.com/questions/57398381/api-29-mediastore-access/65686524#65686524](https://stackoverflow.com/questions/57398381/api-29-mediastore-access/65686524#65686524) – Theo Jan 13 '21 at 11:53

0 Answers0