点击图片库中的图片即可

时间:2018-08-10 06:14:52

标签: android image android-intent android-gallery

我是android的新手,我编写了代码以从图库中选择多个图像,并为此实现了2种编写方法。 在onActivityResult上,我使用data.getClipdatarecieve每个图像。

这是选择多张图像的第一种方法。

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

这是选择多张图像的第二种方法。

Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent,RESULT_LOAD_IMAGE);

我采用了第二种选择多张图像的方法,因为在实现此功能后,它对我的​​应用程序看起来更好,而且我只需单击即可选择多张图像,然后停止使用第一种方法,因为我必须长按才能选择多张图像。一切正常,就像在android studio模拟器和诺基亚设备USB调试上一样。但是在一个三星设备上,我根本无法选择图像,第一种方法在这里起作用。所以我的问题是,在可能的情况下,如何使用第二种方法在这种情况下实现多张图像,这个问题是否也会在其他设备上出现?

2 个答案:

答案 0 :(得分:1)

正如您所提到的,三星选项1和其他设备选项2可以使用。 因此只需设置条件并检查当时使用的设备

String deviceName = "Samsung";
if(deviceName.e(android.os.Build.MODEL)){
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), RESULT_LOAD_IMAGE);
}else{
    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    startActivityForResult(intent, RESULT_LOAD_IMAGE);
}

答案 1 :(得分:0)

我尝试了下面的代码,它可以工作。而不是检查设备的“型号”,而是检查制造商。这将重定向该应用程序以打开文档选择器(而不是默认的图库应用程序),从此处您可以从菜单导航至“照片”。

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

    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);

    String deviceName = "Samsung";
    if(deviceName.equalsIgnoreCase(Build.MANUFACTURER)) {
        intent.setDataAndType(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
    }
    startActivityForResult(intent, REQ_CODE_GALLERY);
}