MIME类型images / *正在显示图像和视频

时间:2014-04-21 10:11:00

标签: android mime-types

我正在尝试使用Intent从SD卡获取图像。 以下是我的代码:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);

当我在三星上运行我的应用程序时,它会显示要选择的图像,但是当我在Micromax上运行相同的代码时,它会显示图像和视频。

我想只选择图片。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

我通过检查我收到的文件的扩展名解决了这个问题,如果收到的文件的扩展名是视频文件的扩展名,那么我向用户显示Toast以仅选择照片。

以下是我用来获取文件扩展名的方法

public static String getImageExtensionFromPath(String imagePath) {
    String[] imageNameArray = imagePath.split("/");
    String imageName = imageNameArray[imageNameArray.length - 1];
    String[] imageArray = imageName.split("\\.");
    String finalImageName = imageArray[1];
    return finalImageName;
}

答案 1 :(得分:1)

删除

intent.setAction(Intent.ACTION_GET_CONTENT);

并通过以下代码初始化intent对象。

intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

答案 2 :(得分:1)

AndroidManifest.xml

中添加此内容
<intent-filter>
   <action android:name="android.intent.action.SEND" />
   <category android:name="android.intent.category.DEFAULT" />
   <data android:mimeType="image/*" />
</intent-filter>

将intent-filter添加到您列出的特定活动中。检查此 Google Code

答案 3 :(得分:0)

似乎没有保证通过使用images / *仅返回图像的方法。它取决于其他应用程序是否尊重返回的内容。因此,您可以让用户选择他们想要的任何内容,然后告知他们是否不是图像等。

我从意图中获取URI之后使用以下方法来检测它是否包含真正的图像,因为即使文件名包含多个点(this.is.my.file.txt)它也能正常工作:

public static String getExtensionFromPath(String imagePath) { return imagePath.substring((imagePath.lastIndexOf(".") + 1), imagePath.length()); }