【发布时间】:2014-04-21 10:10:59
【问题描述】:
我正在尝试使用 Intent 从 sd 卡中获取图像。 以下是我的代码:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
当我在三星上运行我的应用程序时,它会显示要选择的图像,但是当我在 Micromax 上运行相同的代码时,它会显示图像和视频。
我只想选择图像。我该如何解决这个问题?
【问题讨论】:
-
我怀疑这里的任何答案都会有所作为。问题很可能是画廊应用程序或由 Micromax 设备上的
Intent打开的任何应用程序没有正确实现这一点。它应该只显示图像,但制造商搞砸了,现在它也显示视频。它发生的频率比人们想象的要多…… -
实际上它不是显示视频的图库应用。当我从对话框中选择其他应用程序(如照片)时,我会得到图像和视频。
-
好吧,您对此无能为力。您使用的代码很好。收到
Intent的应用程序只是没有按应有的方式响应。我不会担心的。只需检查它是否真的是一张已被选中的照片。您永远无法确定其他应用程序做了什么,或者哪个应用程序准确响应了Intent。 -
有什么方法可以在 onActivityResult() 方法中检测到我收到的是视频而不是图像,以便我可以在那里设置一些条件?
-
最简单的检查是文件扩展名。更复杂一点是检查 mime 类型。有很多解决方案,我认为也有一些好的库来识别文件类型。根据您希望它是一张照片的确定程度,您可以决定要做什么。对于初学者来说,检查文件扩展名应该绰绰有余。 Here is another question that deals with this
标签: android mime-types