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

How to get first two chooser intents and display only them for user in android

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

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

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

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

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

如何实现?

使用这种类型的代码:

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

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

添加下行

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

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

  • 当您使用 intent.setAction(Intent.ACTION_PICK); 时,您将看到 phone 制造商提供的图库、文件管理器和任何内置照片应用程序提供商。
  • 当您将 intent.setAction(Intent.ACTION_GET_CONTENT); 与上面一起使用时,您还会看到 Google 驱动器。

Don't go for first two chooser intents it is not recommended and I don't know the reason, Also I don't know how to do that.

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