【问题标题】:Resolver bulkInsert of Audio MediaStore not Working in Android 11Audio MediaStore 的解析器 bulkInsert 在 Android 11 中不起作用
【发布时间】:2021-08-10 12:33:42
【问题描述】:

我想将音频音乐文件添加到播放列表。在 Android 10 之前它可以正常工作。但在 Andorid 11 之后,它会抛出以下异常:

java.lang.SecurityException: app has no access to content://media/external_primary/audio/playlists/147143
     at android.os.Parcel.createExceptionOrNull(Parcel.java:2389)
     at android.os.Parcel.createException(Parcel.java:2373)
     at android.os.Parcel.readException(Parcel.java:2356)
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
     at android.content.ContentProviderProxy.bulkInsert(ContentProviderNative.java:574)
     at android.content.ContentResolver.bulkInsert(ContentResolver.java:2243)
     at com.audio2020.audioplayer.utils.PlaylistsUtil.addToPlaylist(PlaylistsUtil.java:216)
     at com.audio2020.audioplayer.utils.PlaylistsUtil.addToPlaylist(PlaylistsUtil.java:130)
     at com.audio2020.audioplayer.utils.MusicUtil.toggleFavorite(MusicUtil.java:371)
     at com.audio2020.audioplayer.ui.nowplaying.NowPlayingController.addToFavourite(NowPlayingController.java:779)
     at com.audio2020.audioplayer.ui.nowplaying.NowPlayingController_ViewBinding$10.doClick(NowPlayingController_ViewBinding.java:154)
     at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18)
     at android.view.View.performClick(View.java:7575)
     at android.view.View.performClickInternal(View.java:7531)
     at android.view.View.access$3900(View.java:842)
     at android.view.View$PerformClick.run(View.java:28866)
     at android.os.Handler.handleCallback(Handler.java:938)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:264)
     at android.app.ActivityThread.main(ActivityThread.java:8262)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)

我在 Andorid 11 中像这样获取 ContentUri:

MediaStore.Audio.Playlists.Members.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY, playlistId);

请指导我。因此,我也无法在FavouriteList 中添加该音频文件

bulkInsert 时抛出错误:

    int numInserted = 0;
    for (int offSet = 0; offSet < size; offSet += 1000) {
        numInserted += resolver.bulkInsert(uri, makeInsertItems(songs, offSet, 1000, base));
    }

【问题讨论】:

    标签: android media-queries media q mediastore


    【解决方案1】:

    您需要使用 Android 11 的存储访问框架实现新的存储 API。

    欲了解更多信息:https://developer.android.com/about/versions/11/privacy/storage

    【讨论】:

    • 请在您尝试访问文件的位置添加代码。
    • 已经为此苦苦挣扎了一年多。结论它似乎是一个错误。 stackoverflow.com/questions/57398381/api-29-mediastore-access/…
    • @Theo 我在Android11中重命名文件时也遇到了这种问题
    • 到目前为止,似乎没有任何人能够提出明确的答案
    • @Aayushi Babariya 最好在 SO 上发布单独的帖子。这篇文章是关于使用 android10+ 将曲目插入播放列表
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多