我正在使用context.getExternalFilesDir
来获取应用程序的文件夹,并且该文件夹在大多数设备上都是内部存储仿真卡:/storage/emulated/0/Android/data/mypackage.com/files
这是真的,并且根据文档:
将绝对路径返回到主共享/外部存储设备上目录的绝对路径,应用程序可以在该目录中放置其拥有的永久文件。
现在,在返回的getExternalFilesDir
上创建的文件夹中,我有一个文件myimage.png
要与其他应用共享,调用FileProvider.getUriForFile(...myimage.png)
在某些设备上会引发错误,错误就像:
无法找到包含/storage/1234-1234/Android/data/mypackage.com/files
的已配置根目录
我有2个问题:
什么会导致将sdcard视为getExternalFilesDir
而不是内部存储路径?即使我在设备中插入了SD卡,也无法在设备上看到它。因为应该先返回内部存储空间。
使用外部sdcard的路径时,getUriForFile
为什么会崩溃以及如何解决?
我的文件路径包含<external-files-path >
项,并且在使用storage/emulated/0/Android
路径时工作正常且没有崩溃
我在FileProvider error onHuawei devices看到了一些答案,即某些设备在ContextCompat.getExternalFilesDirs
上返回的路径不同,而其他提及(https://github.com/linchaolong/ImagePicker/issues/10)的情况是getUriForFile
在内部使用{{1} }。