1

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

所以,我尝试了类似下面的东西

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

但与画廊和文件资源管理器一起,它也显示其他应用程序。它还显示谷歌驱动器

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

如何做到这一点?

4

2 回答 2

2

使用这种类型的代码:

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);
于 2020-02-11T10:01:42.473 回答
1

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

添加以下行

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

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

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

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

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

于 2020-02-11T10:09:32.160 回答