如何在 Android 4.1.2 上的外部存储 Public 目录文档中保存文件

How to save files in External Storage Public Directory DOCUMENTS on Android 4.1.2

我想在我的 Android 4.1.2 智能手机的文档目录中保存一个文件。

此代码段:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),"test.txt");

引发此异常:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NoSuchFieldError: android.os.Environment.DIRECTORY_DOCUMENTS

当这个正在工作时:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"test.txt"); 

但我想将我的文件保存在我的文档目录中,而不是下载中。我读过 DIRECTORY_DOCUMENTS 仅适用于 Android 4.4 及更高版本。但是我的智能手机上还有一个文档目录。那么,有没有办法保存在文档中呢?

感谢解答

鹅卵石

您无法访问 DIRECTORY_DOCUMENTS 因为它不在 Android 4.1.2 中。这意味着,尽管您的外部存储中有一个 Documents 目录,但 DIRECTORY_DOCUMENTS 并未指向它(因为它不存在)。要解决此问题,您必须创建目录(如果不存在)并手动获取该文件夹的路径。

File docsFolder = new File(Environment.getExternalStorageDirectory() + "/Documents");
boolean isPresent = true;
if (!docsFolder.exists()) {
    isPresent = docsFolder.mkdir();
}
if (isPresent) {
    File file = new File(docsFolder.getAbsolutePath(),"test.txt"); 
} else {
    // Failure
}

该文件夹存在于 Android 的旧版本(从 Api 1)中,但字段 DIRECTORY_DOCUMENTS 首先在版本 4.4 中可用(Api 19 - Kitkat ).

我的解决方案是对旧的 Android 版本使用 Environment.getExternalStorageDirectory() + "/Documents" 而不是 DIRECTORY_DOCUMENTS。