如何将文件保存到用户可访问的位置?

How do I save files to a user accessible location?

我正在编写一个可以导入和导出数据的应用程序,我需要用户可以访问此数据的路径,但不能在 SD 卡上访问。我宁愿把它放在下载文件夹旁边的某个地方,或者放在没有 root 权限的文件资源管理器可见的地方。我不想将数据保存到 /data/data,但我想将它保存在 /storage/emulated/0/ 中的某处。我不知道如何以支持所有 android 设备的方式指定此位置。

我看了很多相似但不完全是我想要的线程。保存到 SD 卡是不可取的,因为不是每个人都有外部存储,但我也不想保存到 File.applicationDirectory 或 File.applicationStorageDirectory,因为用户无法查看这些位置。

我不仅找到了我自己的问题的答案,而且找到了其他几个问题的答案。为了在 android 上创建文件,您必须首先使用 File.requestPermission() 向用户请求 STORAGE 权限。接下来,我遇到了访问/storage/emulated/0的问题,也就是File.userDirectory和File.documentsDirectory指向的地方。我发现这个位置现在在 android 6(棉花糖)及更高版本中受到保护。 (礼貌:https://forums.androidcentral.com/samsung-galaxy-s8-and-s8-plus/802115-why-storage-emulated-0-empty.html) Instead of using that path, I instead used /sdcard as suggested in that link. The name of this directory is misleading, but after reading http://www.stevesandroidguide.com/android-files/ I found out that sdcard-ext is the literal sdcard, and sdcard is actually mounted internal storage. If your files do not show up and errors are not thrown, be sure that you have storage permissions. I found this Adobe post with a useful code snippet describing how to check permissions and how to request them: https://forums.adobe.com/thread/2250328

TL;DR

确保存储权限已启用,处理android版本6及以上时使用/sdcard将文件存储在内部存储中。