我尝试使用以下代码从内部或外部存储中挑选文件:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
startActivityForResult(intent, 1);
当然它有onActivityResult
方法,这不是问题。它适用于安装了文件管理器的现代手机或手机。但是没有文件管理器的旧版本会抛出
android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.GET_CONTENT typ = file / *}
我尝试切换到ACTION_PICK
但没有运气。我也尝试了intent.setType("*/*");
,它没有崩溃,但弹出窗口要求采取行动(视频,联系人......)这是不正确的。我只想挑选任何不仅仅是指定类型的文件。
我不想仅使用任何其他文件管理器来选择文件。无论如何我可以通过这个吗?
答案 0 :(得分:1)
我相信解释错误会使解决方案变得更容易。所以让我向你解释一下:
你正在开始隐含的意图。这意味着你意图知道你想要发生什么(使用选择一个文件)并且你不关心哪个应用程序会这样做。
您遇到的错误只是系统告诉您(开发人员),没有安装能够执行此操作的应用程序(系统和第三方)。根本没有人能够处理你想要的动作。
所以我可以从中看到两个选项:
try-catch
错误
try {
startActivityForResult(intent, 1);
} catch (ActivityNotFoundException e) {
// maybe you should show a toast to the user here?
Toast.makeText(context, "You need to install a file picker", Toast.LENGTH_SHORT).show();
// or maybe redirect to a 3rd party app that you know works
startIntent(new Intent(Uri.parse("https://play.google.com/... some app
}
答案 1 :(得分:0)
以下代码部分应该适合您!
Intent chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
chooseFile.setType("*/*");
Intent intent = Intent.createChooser(chooseFile, "Choose a file");
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
您的Android版本是什么?有些Android可能没有发布此类活动。