如何在 Android 中调用默认的文件选择器?

5
如果您从Android设备访问imgur.com,单击“上传图像”,然后单击“Touch here to select your images”,Android会提示您选择文件上传,提供了几个选项。这个选择器的好处是,即使没有相机作为选项(对于较旧的手机),您也可以从Gallery应用程序启动相机,拍摄照片并最终从图库中选择照片进行上传。

这也适用于任何网站上的任何<input>文件。

所以我的问题是:如何调用该文件选择器并最终在本地Java应用程序中获取所选图像的路径?

如果可能的话,我想对其进行过滤,以便仅提示图像而不是音频文件,并且我不想安装任何文件管理器,因为它可以在浏览器中完成。很难相信它仅适用于浏览器。

我不想实现自己的文件浏览器或在我的应用程序中列出相机的文件夹。我也刚开始接触Android,因此可以获得最终文件路径或图像的完整示例将非常棒。


你是在询问一个HTML5 Web应用程序(在不想使用<input>的地方),还是本机Java应用程序? - CommonsWare
@CommonsWare 原生的 Java 应用程序... 在 HTML5 中很明显.. 只需使用 <input type="file"> - Lipis
@CommonsWare 也许标签文件上传有误导性,但我不知道该添加什么;) 随意根据需要进行编辑。 - Lipis
2
在许多(我敢说现在大多数)安卓设备上,你的例子并不会提供选择文件的机会,而只会提供选择应用程序来提供像图像这样的东西的机会。只有当用户安装了文件管理器应用程序,或者设备异常地配备了一个,或者你有一些潜在的最近功能丰富的安卓版本,才能让你真正选择一个文件 - Chris Stratton
1个回答

4
基于出现的选择器,<input> 似乎正在请求一个 MIME 类型为 */*ACTION_GET_CONTENT 活动。

如果可能,我希望它只提示图片而不是音频文件

使用 MIME 类型 image/*

我刚开始学习 Android,一个获取文件路径或图像的完整示例会非常棒。

请查看:https://dev59.com/Dmkw5IYBdhLWcg3wzdtF#10274699

@Lipis:顺便说一句,我想到了这里有一个更完整的ACTION_GET_CONTENT示例:https://github.com/commonsguy/cw-omnibus/tree/master/Camera/Content - CommonsWare
非常直接明了。不错的想法。我也可能使用它来直接从相机获取图像。 - Lipis
它像手套一样完美地契合了!我也设法通过查看此答案:http://stackoverflow.com/a/3801665/8418完成了上传。 - Lipis
你知道从那个选择器中获取多个文件是否可能吗?你肯定可以从画廊应用程序中选择许多文件..但是是否可以请求多个文件..或者必须这样做..选择文件,然后在您的应用程序上共享..? - Lipis
1
@Lipis:“你知道从那个选择器中获取多个文件是否可能吗?”-- 不行,只能选一个。“选择文件然后在你的应用程序上分享”-- 这个方向使用 ACTION_SEND(一个)或 ACTION_SEND_MULTIPLE(多个)。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接