Intent.ACTION_PICK 表现不同

Intent.ACTION_PICK behaves differently

我正在使用以下代码从图库中挑选图像。当我使用 Samsung 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);
}

如果你想要图库,那么

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

请api19岁以上

使用
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);
                    }

when I test my code on LG Optimus II device, it shows a dialog gives an option to choose either Gallery or Picture

那是因为该设备上有两个活动支持 ACTION_PICKimage/* 个文件。可能有零到 N 个这样的活动,具体取决于设备上的应用程序。这将包括预安装的应用程序和用户自己安装的应用程序。这些范围从本地文件管理器到通用云提供商(例如 Dropbox)再到特定于图像的应用程序(例如 Instagram)。

In other words, it adds one more layer which I do not want.

那就不要用ACTION_PICK。您正在委托给第三方应用程序;用户希望使用哪种第三方应用取决于用户,而不是您。