我使用以下代码从图库中选择图像。当我用三星Galaxy S4进行测试时,它直接进入了我想要的画廊。
但是,当我在LG Optimus II设备上测试我的代码时,它会显示一个对话框,提供选择图库或图片的选项。换句话说,它增加了一个我不想要的层。
两款设备均配备KitKat 4.4.2操作系统。
public static void showFileChooser(Activity activity) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_PICK);
activity.startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);
}
答案 0 :(得分:4)
当我在LG Optimus II设备上测试我的代码时,会显示一个对话框,提供选择图库或图片的选项
这是因为该设备上有两个活动支持ACTION_PICK
个image/*
个文件。根据设备上的应用程序,可以有0到N个这样的活动。这将包括用户自行安装的预安装应用和应用。这些包括从本地文件管理器到一般云提供商(例如Dropbox)到图像特定应用程序(例如Instagram)。
换句话说,它增加了一个我不想要的层。
然后不要使用ACTION_PICK
。您正在委托第三方应用程序;这取决于用户,而不是您,用户希望使用的第三方应用程序。
答案 1 :(得分:3)
如果你想要画廊那么
Intent pickImageIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
请用于api 19或以上
if (Build.VERSION.SDK_INT < 19) {
Intent intent = new Intent();
intent.setType("image/jpeg");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select image to promote"),
GALLERY_INTENT_CALLED);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/jpeg");
startActivityForResult(intent,
GALLERY_KITKAT_INTENT_CALLED);
}