java - 升级到 targetSdkVersion 30,努力实现范围存储
问题描述
我已经接管了一个用 Java 编写的过时的 Android 应用程序
在将 targetSdkVersion 从 27 更改为 30 之前,我已逐步升级依赖项而没有问题。
这是针对以下功能:
- 允许用户从图库中选择或从相机中捕获
- 将值保存到应用程序文件夹
- 将图片发送到 API
我知道在 Android 10 之前的版本中,我可以添加android:requestLegacyExternalStorage="true"
Manifest 文件并且它可以工作,但该功能来自 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)
由于范围存储限制,我已将其范围缩小到权限问题
我理解它背后的概念,但我无法让它发挥作用。
我需要做什么才能在 Java 代码中解决这个问题,因为我不知道如何在 Kotlin for Java 中应用这些示例?
我尝试了以下一些答案:
示例应用:https ://github.com/tinonetic/android-questions-scoped-storages
解决方案
推荐阅读
- angular - 从 Angular 应用程序使用 Azure 服务总线发送消息返回 Cors 错误
- java - NfcAdapter.getDefaultAdapter 返回 null
- python - 千层面包问题
- angular - ionic cordovar - 启动后未定义自定义组件
- python - Keras 问题与 3d 张量的前 k 个分类精度
- javascript - 动态渲染 vue 模板
- laravel - 配置仅在配置发布时加载
- java - 如何使用 pdfbox 修复“定义签名数据范围的意外字节范围值”
- aem - Adobe AEM 6.4.x:如何限制可以在页面上添加哪些组件(使用静态模板)?
- java - 具有一个命名空间和本地部分的多个 SOAP 端点