在没有安装任何文件管理器的 Android 中选择一个文件
Posted
技术标签:
【中文标题】在没有安装任何文件管理器的 Android 中选择一个文件【英文标题】:Pick a file in Android without any file manager installed 【发布时间】:2015-09-30 13:11:49 【问题描述】:我尝试使用以下代码从内部或外部存储中选择一个文件:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
startActivityForResult(intent, 1);
当然它有onActivityResult
方法,这不是问题。它在安装了文件管理器的现代手机或手机中运行良好。但是没有文件管理器的旧版本会抛出
android.content.ActivityNotFoundException:未找到处理 Intent 的 Activity act=android.intent.action.GET_CONTENT typ=file/*
我尝试切换到ACTION_PICK
,但没有成功。我也试过intent.setType("*/*");
,它没有崩溃,但弹出窗口要求采取行动(视频、联系人……),这是不正确的。我只想选择任何文件,而不仅仅是指定类型。
我不想使用任何其他文件管理器来选择文件。无论如何我可以通过这个吗?
【问题讨论】:
【参考方案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
您可以在自己的应用程序中找到一个库或代码来选择文件:http://bit.ly/1N1fZbO
【讨论】:
感谢您的建议。看起来我必须要求用户安装第三个应用程序【参考方案2】:下面的代码部分应该适合你!
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 可能没有发布此类活动。
【讨论】:
对不起,忘了说安卓版本了。现在是 4.0! 如果*/*
,它要求“音乐曲目”、“联系人”和“画廊”。虽然不能选择一个文件。顺便说一句,我用的是模拟器。以上是关于在没有安装任何文件管理器的 Android 中选择一个文件的主要内容,如果未能解决你的问题,请参考以下文章