首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓10: permission:android.permission.ACCESS_MEDIA_PROVIDER拒绝删除

安卓10: permission:android.permission.ACCESS_MEDIA_PROVIDER拒绝删除
EN

Stack Overflow用户
提问于 2022-03-21 08:34:55
回答 1查看 488关注 0票数 1

我的项目中的目标SDK是31,当我试图从DCIM目录中删除一个文件时,我会得到以下错误,例如permission:android.permission.ACCESS_MEDIA_PROVIDER.拒绝的删除请考虑这样的文件路径:"/storage/emulated/0/DCIM/Screenshots/pic1.jpg"

我已经尝试过在每个地方查找结果,包括堆栈溢出,但都没有成功。甚至我也将目标SDK更改为降低30,但没有工作。

以下是我已经研究过但没有效果的解决方案:

1.清单文件中的标志

代码语言:javascript
运行
复制
android:requestLegacyExternalStorage="true"
android:preserveLegacyExternalStorage="true"

2.清单文件中的权限

代码语言:javascript
运行
复制
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="40"
    tools:replace="android:maxSdkVersion" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
    android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
    tools:ignore="ScopedStorage" />

请查找所附代码

代码语言:javascript
运行
复制
val fileToDelete = File("/storage/emulated/0/DCIM/Screenshots/pic1.jpg")
fileToDelete.delete()

注意: filepath硬编码只是为了更好地解释。

请找到所附的日志

代码语言:javascript
运行
复制
2022-03-21 11:22:35.331 8639-20226/com.filepickerdemo D/ContentResolver: delete denied by permission:android.permission.ACCESS_MEDIA_PROVIDER#content://media/external/images/media#_data = ?#/storage/emulated/0/DCIM/Screenshots/pic1.jpg

我还应该在代码中添加什么来解决这个问题。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-05-02 09:26:53

要删除android 10及以上版本中的媒体文件,您可以尝试使用内容解析器API。

您需要将媒体的内容uri传递给'contentResolver.delete()‘方法&您将能够轻松地做到这一点。

下面是我关于如何使用Java - Android中的作用域存储-编写和删除媒体文件实现这一操作的文章。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71554739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档