Добавление песен в список воспроизведения в Android Q (API29) и выше вызывает исключение SecurityException - PullRequest
2 голосов
/ 29 мая 2020

Из-за Android изменений конфиденциальности в Android Q (API29) невозможно добавить песни в список воспроизведения, и при добавлении трека выдается это сообщение об ошибке.

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

Я знаю, что мы можем поймать это как RecoverableSecurityException и предоставить разрешение для каждого файла индивидуально.

Но это действительно проблема, и мне интересно, есть ли другой способ.

Я уже нашел сообщение от пользователя @Theo с той же проблемой, но без ответов.

Код для добавления песен в плейлист

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

Похоже, что выброшенное Exception не является экземпляром RecoverableSecurityException, так как же нам получить доступ к этому контенту?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...