我正在将 Android 应用程序更新为分区存储,我现在面临的问题是,在我的应用程序上,用户可以选择一组要自动处理的图像(他们可以选择覆盖原始图像图片)。
问题是,当我试图从其 Uri 覆盖原始图像时,Android 抛出一个 RecoverableSecurityException
,它向用户显示一个对话框,请求同意修改该照片。
我想知道的是,是否可以改为显示一个权限对话框,但是一次显示整组图像(例如,一次 10 张图像),而不是必须为每个图像显示一个对话框。
我尝试使用 ContentResolver
的 applyBatch
方法(下面的代码模拟了这个问题),但同意对话框只显示第一个更新的图像。
val values = ContentValues().apply {
put(MediaStore.Images.Media.DATE_MODIFIED, System.currentTimeMillis())
}
val ops = arrayListOf<ContentProviderOperation>()
for (image in galleryImages) {
ops.add(ContentProviderOperation.newUpdate(image.uri)
.withValues(values)
.build())
}
context.contentResolver.applyBatch(MediaStore.AUTHORITY, ops)
对此有什么想法吗?谢谢。
最佳答案
不幸的是,在 Android Q 中是不可能的。但是,在 2019 年 Android 峰会上,该团队表示在下一个 Android 版本中将可以进行批量编辑和删除,因此据说在未来的“R”版本中。
观看下一个视频,从 18:50 开始,他们在视频中简短地讨论了这件事:
Android Q 中唯一的解决方案是获得对您要操作的目录的 SAF 权限,并使用 DocuentFile API 而不是 MediaStore。
关于Android 10 MediaStore 更新镜像 RecoverableSecurityException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57786578/