升级到 targetSdkVersion 30,苦苦挣扎于作用域存储实现

问题描述

我接手了一个用 Java 编写的过时的 Android 应用

在我将 targetSdkVersion 从 27 更改为 30 之前,我已经逐步升级了依赖项,没有出现问题。

这是针对以下功能的:

  1. 允许用户从图库中选择或从相机拍摄
  2. 将值保存到应用程序文件
  3. 图片发送到 API

我知道在 Android 10 之前的版本中,我可以在清单文件添加 android:requestLegacyExternalStorage="true" 并且它会起作用,但该功能来自 Android 10+。

如果我降级 targetSdkVersion,它就可以工作。

否则会抛出以下错误

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/xxxxx/1380402_672833029402941_703996746_n.jpg: open Failed: EACCES (Permission denied)

由于scoped storage restrictions

,我已将范围缩小到权限问题

我理解它背后的概念,但我无法让它发挥作用。

我需要做什么才能在 Java 代码解决这个问题,因为我不知道如何在 Kotlin for Java 中应用示例?

我尝试遵循以下一些答案:

示例应用:https://github.com/tinonetic/android-questions-scoped-storages

  1. Write permissions not working - scoped storage Android SDK 30 (aka Android 11)
  2. Scoped Storage android 10.0
  3. Add image to Media Gallery - Android

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)