我使用OpenStreetMap的Android应用程序几个月来一直运行良好,现在却无法再显示OpenStreetMapMap。尽管授予了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手机上运行,我认为问题与外部存储访问的新政策和使用存储访问框架的要求有关,对吗?
不管我是对是错,有没有人知道我该怎么补救?
2条答案
按热度按时间zqry0prt1#
由于您的目标是Andorid 10 - API 29,因此Android官方文档指出:
在Android 10上运行
如果您的应用面向Android 10(API级别29),请选择退出作用域存储,并继续使用适用于Android 9及更低版本的方法来执行此操作。
因此,您需要添加到AndroidManifest.xml:
@blackapps这不是黑客攻击。
hsgswve42#
一个更好的方法是将用于缓存的存储从外部移到内部。这必须在加载/膨胀视图之前完成。
对于活动:
对于片段:
如果使用“活动绑定”,则必须在调用以下命令之前更改目录:
否则,将构建Map视图并自动尝试访问外部存储。