因为 Android Q (API29) 中的 Android 隐私更改 无法将歌曲添加到播放列表,并且在添加轨道时会引发此错误消息。
java.lang.SecurityException: com.mp3player.mp3player has no access to content://media/external_primary/audio/media/117
我知道我们可以将其视为
RecoverableSecurityException
并分别授予每个文件的权限。但这真的很麻烦,我想知道是否还有其他方法。
我已经找到了 post来自用户@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);
}
编辑
貌似扔了异常(exception) 不是
RecoverableSecurityException
的实例那么我们如何访问这些内容呢?
最佳答案
您可以使用 playListUri.getpath()
并解决它。
关于java - 在 Android Q (API29) 及更高版本中将歌曲添加到播放列表会引发 SecurityException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62076876/