【发布时间】:2019-10-20 09:37:16
【问题描述】:
在我的应用程序中,我正在保存不同类型的图像、视频、pdf 等文件。如果目录尚不存在,我将创建一个目录,并将我的应用程序生成的文件保存在该文件夹中,以便用户可以轻松找到我的应用程序使用和创建的文件。但在 Android 10 中,我无法在外部存储中检查和创建目录。
我知道我可以在清单中添加android:requestLegacyExternalStorage="true" 以继续使用旧功能,但这不是永久解决方案。另外,我不想使用getExternalFilesDir(),因为如果用户卸载我的应用程序,此方法创建的这个文件夹将被删除,我希望应用程序保存的文件保留在他的设备中,以便可以使用这些文件再次。
这是我目前用来检查和创建我的应用程序目录并将文件“myFile”存储在该目录中的代码。
File sd =Environment.getExternalStorageDirectory();
File directory = new File(sd.getAbsolutePath() + "/" + getResources().getString(R.string.app_name));
//create directory if not exist
if (!directory.isDirectory()) {
directory.mkdirs();
}
File file = new File(directory, myFile);
如何在 Android 10 中实现相同的结果?我真正想要的是:
- 检查是否存在以我的应用名称命名的目录。如果目录不存在,则在设备外部存储中创建目录。
- 将我的应用程序生成的所有文件保存在此目录中。
- 即使用户卸载应用程序,该文件夹也不应该被删除。
- 从此文件夹中读取文件。
【问题讨论】:
-
如果您使用 getFilesDIr()、getExternalFilesDir() 或 getExternalFIlesDirs(),您的应用可以以经典方式在其中创建任意数量的文件夹。
-
如果您不想改变现代,请使用 ACTION_OPEN_DOCUMENT_TREE 让用户选择内部存储器或微型 SD 卡。一旦有了这样的内容树方案,您就可以根据需要创建任意数量的文件夹
-
使用 getExternalFilesDir() 或 getFilesDir() 生成的文件夹将在应用卸载时被删除。我不想删除文件夹。
-
是的,正如您在我的第二条评论中看到的那样,我已经意识到这一点。请对我的第二条评论做出反应。
-
我还没有尝试过你的第二个建议。一旦我这样做了,我会告诉你的。
标签: java android android-10.0