Intent.ACTION_PICK behaves differently

蹲街弑〆低调 提交于 2019-12-20 05:56:47

问题


I am using following code to pick an image from the gallery. When I test it with Samsung Galaxy S4, it directly goes to Gallery that is what I want actually.

BUT, when I test my code on LG Optimus II device, it shows a dialog gives an option to choose either Gallery or Picture. In other words, it adds one more layer which I do not want.

Both devices have KitKat 4.4.2 operating system.

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

回答1:


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

That is because there are two activities on that device that support ACTION_PICK of image/* files. There can be zero to N such activities, depending on what apps are on the device. This will include both pre-installed apps and apps that the user installed themselves. These will range from local file managers to general cloud providers (e.g., Dropbox) to image-specific apps (e.g., Instagram).

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

Then do not use ACTION_PICK. You are delegating to a third-party app; it is up to the user, not you, what third-party app the user wishes to use.




回答2:


if you want Gallery then

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

please use for api 19 or above

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


来源:https://stackoverflow.com/questions/35509333/intent-action-pick-behaves-differently

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!