Android Intent.ACTION_获取_内容(仅使用ResolveInfo中的特定应用程序)

Android Intent.ACTION_获取_内容(仅使用ResolveInfo中的特定应用程序),android,android-intent,Android,Android Intent,这里遇到了一个小问题,用户可以选择从图库中选择照片。在某些手机上,有更多的应用程序声称可以处理用户的意图,用户可以将其作为一种选择。。。是否有一种方法可以以标准方式将其过滤到标准版照片库中 p.查询中的第一项始终是画廊吗 下面是我们为获取应用程序列表所做的工作 Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.setType("image/*"); i.putExtra("return-data", true); PackageManager

这里遇到了一个小问题,用户可以选择从图库中选择照片。在某些手机上,有更多的应用程序声称可以处理用户的意图,用户可以将其作为一种选择。。。是否有一种方法可以以标准方式将其过滤到标准版照片库中

p.查询中的第一项始终是画廊吗

下面是我们为获取应用程序列表所做的工作

Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("image/*");
i.putExtra("return-data", true);
PackageManager p = new PackagerManager();
List<ResolveInfo> list = p.queryIntentActivities(i, 0);
Intent i=新的意图(Intent.ACTION\u GET\u CONTENT);
i、 setType(“image/*”);
i、 putExtra(“返回数据”,真);
PackageManager p=新的PackageManager();
列表=p.querytentActivities(i,0);
所以如果我们只得到一条信息。。。伟大的但是如果列表中有多个项目。。。通过packageName进行过滤似乎有点黑客,因为我们不知道packageName将是什么。。。外面有太多不同的手机了

有什么建议吗

在某些手机上,有更多的应用程序声称可以处理用户的意图,用户可以将其作为一种选择。。。是否有一种方法可以以标准方式将其过滤到标准版照片库中

没有,因为没有“标准版照片库”

p.查询中的第一项始终是画廊吗

没有

有什么建议吗


允许用户从他们选择的任何支持
image/*
MIME类型的
ACTION\u GET\u CONTENT
的应用程序中选择图像。

以下是使用ResolveInfo中特定应用程序的方法: 当您确切地知道要使用哪一个并且不想显示“使用完成操作”对话框时,这将非常有用

  • 查询响应Intent.ACTION\u GET\u内容的应用程序:

    Intent intent= new Intent(Intent.ACTION_GET_CONTENT, null);
    intent.setType("image/*");
    mApps = context.getPackageManager().queryIntentActivities(intent, 0);
    
  • mApps将保存所有支持Intent.ACTION\u GET\u CONTENT Intent的应用程序列表

  • 所需应用程序的Fire startActivityForResult:

    ResolveInfo info = mApps.get(position); // depends on which app you want to start
    String packageName = info.activityInfo.packageName;
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.setPackage(packageName); // this will direct the intent to your specific app
    intent.setType("image/*");
    intent.putExtra("crop", "true");
    ...
    startActivityForResult(intent, PICK_IMAGE);
    

  • 如果我们允许用户选择应用程序,onActivityResult捕获此对话框,结果代码为false。所以我想禁用此对话框并直接打开gallery。有什么想法吗?