如何获取前两个选择器意图并仅在android中为用户显示它们

Posted

技术标签:

【中文标题】如何获取前两个选择器意图并仅在android中为用户显示它们【英文标题】:How to get first two chooser intents and display only them for user in android 【发布时间】:2020-05-26 16:18:47 【问题描述】:

我正在尝试在选择器意图中仅显示图库和文件管理器

所以,我尝试了类似下面的方法

Intent intent = new Intent();
                intent.setType("image/*");
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                intent.putExtra(Intent.EXTRA_LOCAL_ONLY,true);
                intent.setAction(Intent.ACTION_PICK);
                startActivityForResult(Intent.createChooser(intent, "Select Picture"), RESULT_LOAD_IMAGE);

但除了图库和文件资源管理器,它还显示其他应用程序。它还显示谷歌驱动器

所以,我决定只选择前两个意图并删除其他意图。

如何做到这一点?

【问题讨论】:

【参考方案1】:

使用这种类型的代码:

Intent i= new Intent(Intent.ACTION_GET_CONTENT);
    i.setType("image/*");

    Intent pickIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    pickIntent.setType("image/*");

    Intent chooserIntent = Intent.createChooser(i, "Select Image");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] pickIntent);

    startActivityForResult(chooserIntent, PICK_IMAGE);

【讨论】:

【参考方案2】:

对于您的情况,实现您需要的最简单方法是

添加下一行

intent.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

通过添加以上行,您可以摆脱用户已安装的应用程序。 但要注意一件事

当您使用intent.setAction(Intent.ACTION_PICK); 时,您将看到画廊、文件管理器以及手机制造商提供的任何内置照片应用程序。 当您同时使用intent.setAction(Intent.ACTION_GET_CONTENT); 时,您还会看到 Google 驱动器。

不推荐前两个选择器意图,我不知道原因,也不知道该怎么做。

希望,这给出了正确的解释和答案。

【讨论】:

这只是我所期待的直截了当的答案。谢谢 我不建议前两个意图过滤器。如果你还想参考这里***.com/a/22368585/12773602 我不再需要这种技术了。上面的答案对我的项目来说已经足够了。

以上是关于如何获取前两个选择器意图并仅在android中为用户显示它们的主要内容,如果未能解决你的问题,请参考以下文章

如何从主选择页面隐藏离子标签并仅在选择模式标题上显示

Android如何根据选择器意图中的用户操作请求权限

获取选择选择器意图谷歌驱动器文件文件没有谷歌驱动器Api集成Android

如何在android中为不同颜色的按钮重用选择器?

如何仅从 Google Photos 应用程序中选择图像? Android 谷歌照片意图

从联系人选择器意图中选择电子邮件、姓名和电话号码