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)
请让我知道我可以做些什么来解决这个问题。谢谢!
我最终使用了 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 ,请告诉我。谢谢!
| 归档时间: |
|
| 查看次数: |
2908 次 |
| 最近记录: |