ACTION_GET_CONTENT 意图不显示外部存储

Cha*_* Li 5 android android-intent android-file android-external-storage android-storage

我正在为我的 Android 应用实现导入功能。我想让用户选择他们想要从他们设备上的外部存储(确切地说是下载目录)和其他在线文件存储(如 DropBox 和 Google Drive)导入的文件。

我实现了它并在一个模拟器和两个安卓设备上进行了测试。当我在模拟器上测试它时,Android 版本 6.0,因为它没有安装 DropBox 和 GoogleDrive,我看到了我所期待的,它能够从下载目录中选择一个文件: 在此处输入图片说明

当我在 Google Pixel 手机 Android 版本 7.1.2 上对其进行测试时,一切都按我的预期工作。我可以从下载目录、Google Drive 和 DropBox 中选择一个文件: 在此处输入图片说明

但是,当我在三星 Galaxy 4 设备 Android 版本 5.0.1 上对其进行测试时,我可以从 Google Drive 和 Dropbox 中选择一个文件,但是我无法从我的下载目录中选择一个文件: 在此处输入图片说明

这是我选择文件的代码:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/*");
startActivityForResult(intent, GET_FILE_RESULT_CODE);
Run Code Online (Sandbox Code Playgroud)

请让我知道我可以做些什么来解决这个问题。谢谢!

Cha*_* Li 4

我最终使用了 ACTION_OPEN_DOCUMENT 来达到目的。现在我也可以从 Android 5.0.1 的外部存储中选择文件。

但是,ACTION_OPEN_DOCUMENT仅支持 API 19 及更高版本。

这就是我所做的:

if (Build.VERSION.SDK_INT >= 19) {
                Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
                intent.setType("text/*");
                intent.addCategory(Intent.CATEGORY_OPENABLE);
                startActivityForResult(intent, GET_FILE_RESULT_CODE);
            }
            else {
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("text/*");
                intent.addCategory(Intent.CATEGORY_OPENABLE);
                startActivityForResult(intent, GET_FILE_RESULT_CODE);
            }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助遇到同样问题的人。如果有人知道为什么我无法从 Android 5.0.1 的外部存储中选择ACTION_GET_CONTENT ,请告诉我。谢谢!