当前位置: 首页 > 知识库问答 >
问题:

意图ACTION_PICK的行为不同

郝峰
2023-03-14

我使用以下代码从图库中选取图像。当我用三星Galaxy S4测试它时,它直接进入Gallery,这就是我真正想要的。

但是,当我在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);
}

共有2个答案

庾波光
2023-03-14

如果你想要画廊

    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);
                    }
禹昆
2023-03-14

当我在LG Optimus II设备上测试我的代码时,它会显示一个对话框,提供选择图库或图片的选项

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

换句话说,它增加了一个我不想要的层。

然后不要使用ACTION_PICK。您正在委托给第三方应用;用户希望使用什么第三方应用取决于用户,而不是您。

 类似资料:
  • 我用的是这样的意图: 在中,我有以下内容: 当我从特定的相册中选择图像时,比如“posts”、“profile photos”(参见屏幕截图),我无法在中获取图像路径。可以从其他相册中选择图像,没有任何问题。 我尝试在中添加但返回。 这里也有类似的问题,但没有人回答。 请救命!

  • 问题内容: 前一阵子,在使用Class.getMethod和自动装箱时,我遇到了类似的问题,因此在自己的查找算法中实现它很有意义。但是,真正让我感到困惑的是,以下两种方法也不起作用: String.class实现了Serializable接口,我确实希望它包含在lookup方法中。 我也必须在自己的查找算法中考虑这一点吗? 编辑 :我确实读过Javadoc, 所以让我强调一下问题的第二部分 :如果

  • 我是Python的新手,我对Python处理空对象的方式有点困惑。 考虑这段代码; 我得到了这段代码的以下输出。 我假设由{}初始化的对象是有效对象。为什么Python不那样对待它?为什么要得到diff If条件的diff输出? 在C++中,当我说 如果obj不是NULL,它将进入IF块(不管它是垃圾值还是其他) 但当我翻译成Python时也是一样的。 为什么?我读到Python将{}计算为fal

  • 请注意,NULL字节始终存在,您可以使用检查它。 我知道我可以使用获得类似的结果。我不是在问其他选择,我只是想了解格式字符(如doc所说的“NUL填充字符串”)背后的逻辑。 “NULL”值在哪里涉及到所有这些?

  • 我有以下输入字符串: 这里有各种各样的错误:标题前面有“。”应该是ID后面的分隔符。作者姓名的最后两个字符出现在日期字段中,实际日期丢失。 我怎样才能纠正这些问题?

  • 我读过关于Android Oreo后台执行限制的文章,它明确指出广播不受影响,但我无法让它在Android Oreo上工作。 首先,我是在SDK27上编译的。其次,我在清单文件中声明了接收者: 然后是接收器的实现,也可以简单到: 在运行时注册广播意图,让它工作(在模拟器上,从adb shell激发意图),但我不确定这是否是正确的方法: 这个有什么已知的bug吗?