我正在尝试使用Intent从SD卡获取图像。 以下是我的代码:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
当我在三星上运行我的应用程序时,它会显示要选择的图像,但是当我在Micromax上运行相同的代码时,它会显示图像和视频。
我想只选择图片。我该如何解决这个问题?
答案 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());
}