【问题标题】:Adding songs to a playlist in Android Q (API29) and above throws a SecurityException在 Android Q (API29) 及更高版本中将歌曲添加到播放列表会引发 SecurityException
【发布时间】:2020-09-16 11:41:15
【问题描述】:

由于 Android Q (API29) 中的 Android 隐私更改,无法将歌曲添加到播放列表,并且在添加曲目时会抛出此错误消息。

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

我知道我们可以将其捕获为 RecoverableSecurityException 并单独授予每个文件的权限。

但这真的很麻烦,我想知道是否还有其他方法。

我已经从用户@Theo 那里找到了一个post,有同样的问题,但没有任何答案。

将歌曲添加到播放列表的代码

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);
}

编辑

看起来抛出的 Exception 不是RecoverableSecurityException 的实例,那么我们如何访问该内容?

【问题讨论】:

标签: java android


【解决方案1】:

你可以使用playListUri.getpath()解决它。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2017-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
相关资源
最近更新 更多