如何获取前两个选择器意图并仅在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中为用户显示它们的主要内容,如果未能解决你的问题,请参考以下文章
获取选择选择器意图谷歌驱动器文件文件没有谷歌驱动器Api集成Android