从图库中点击选择多张图片
Picking multiple images on clicking from gallery
我是 android 的新手,我已经为图库中的 select 多张图片编写了代码,为了实现这一点,我编写了两种实现方法。
在 onActivityResult
上,我使用 data.getClipdata
来 recieve
每张图片。
这是第一种select多张图片的方式。
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);
这是第二种select多张图片的方式。
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);
我选择了第二种方式 selecting 多张图片,因为在实现它时它看起来更适合我的应用程序而且我可以 select 只需点击多张图片并停止使用第一种方式作为我必须使用长按 select 多张图片。在 android 工作室模拟器和诺基亚设备 USB 调试上一切顺利。但是在一台三星设备上,我根本无法 select 图像,这里第一种方法奏效了。所以我的问题是如何在这种情况下使用第二种方式获得多个图像,如果可能的话,这个问题也会出现在其他设备上吗?
正如您提到的三星选项 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);
}
我试过下面的代码,它有效。不要检查设备 "model",而是检查制造商。这将重定向应用程序以打开文档选择器(而不是默认的图库应用程序),您可以从那里导航到菜单中的 "Photos"。
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);
}
我是 android 的新手,我已经为图库中的 select 多张图片编写了代码,为了实现这一点,我编写了两种实现方法。
在 onActivityResult
上,我使用 data.getClipdata
来 recieve
每张图片。
这是第一种select多张图片的方式。
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);
这是第二种select多张图片的方式。
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);
我选择了第二种方式 selecting 多张图片,因为在实现它时它看起来更适合我的应用程序而且我可以 select 只需点击多张图片并停止使用第一种方式作为我必须使用长按 select 多张图片。在 android 工作室模拟器和诺基亚设备 USB 调试上一切顺利。但是在一台三星设备上,我根本无法 select 图像,这里第一种方法奏效了。所以我的问题是如何在这种情况下使用第二种方式获得多个图像,如果可能的话,这个问题也会出现在其他设备上吗?
正如您提到的三星选项 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);
}
我试过下面的代码,它有效。不要检查设备 "model",而是检查制造商。这将重定向应用程序以打开文档选择器(而不是默认的图库应用程序),您可以从那里导航到菜单中的 "Photos"。
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);
}