【发布时间】: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 的实例,那么我们如何访问该内容?
【问题讨论】:
-
你能找到解决办法吗?