java - 尝试显示 OpenStreetMap 地图时出现文件存储错误
问题描述
我使用 OpenStreetMap 的 Android 应用程序已经完美运行了几个月,现在无法再显示 OpenStreetMap 地图。尽管获得了WRITE_EXTERNAL_STORAGE
许可,但我收到如下消息:
E/OsmDroid: Unable to start the SQLite tile writer. Check external storage availability.
I/StorageUtils: /storage/emulated/0 is NOT writable
由于我的目标是 API29 并在 Android 10 手机上运行,我想问题与有关外部存储访问的新策略和使用存储访问框架的要求有关。我对吗?
不管我是对是错,有谁知道我该如何解决这个问题?
解决方案
因为您的目标是 Andorid 10 - api 29,所以官方 Android 文档指出:
在 Android 10 上运行
如果您的应用面向 Android 10(API 级别 29),请选择退出范围存储并继续使用适用于 Android 9 及更低版本的方法来执行此操作。
所以需要在AndroidManifest.xml中添加:
<manifest ... >
<!-- This attribute is "false" by default on apps targeting
Android 10 or higher. -->
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
</manifest>
@blackapps 这不是黑客攻击。
推荐阅读
- java - 如何做文件夹和文件的递归树?
- python - Flask Admin Ckeditor 图片上传
- php - array_multisort 用于数字和字符串
- asp.net - 如何在剃刀视图中的表单内构建对象
- django - Django 多模型更新/创建
- css - 找到通过级联覆盖另一个规则的规则?
- java - Comparator.comparing(Function keyExtractor, Comparator keyComparator)中可以使用什么keyComparator?
- c# - 任何人都知道一个好的随机数生成器
- node.js - 没有值传递给插槽,但原始值在机器人中传递
- swift - 转换为 Swift 4,下标不明确错误