Intent.ACTION_PICK behaves differently

匿名 (未验证) 提交于 2019-12-03 02:38:01

问题:

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


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