在这里遇到一点障碍,为用户提供了从图库中选择照片的选项。在某些手机上,有更多的应用程序声称处理用户将其作为选择的目的...有没有办法以标准方式过滤到标准问题照片库?
p.queryIntentActivities中的第一项是否始终是图库?
以下是我们为获取应用列表所做的工作....
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);
因此,如果我们只获得一个resolveinfo ...太棒了!但是,如果我们在列表中获得多个项目...通过packageName过滤似乎有点hacky,因为我们不知道packageName将是什么...那里有太多不同的手机。
有什么建议吗?
答案 0 :(得分:1)
在某些手机上,有更多应用声称可以处理用户将其作为选择的应用...有没有办法以标准方式过滤到标准问题照片库?
不,因为没有&#34;标准问题照片库&#34;。
p.queryIntentActivities中的第一项是否始终是图库?
没有
有什么建议吗?
允许用户从他们选择的任何支持ACTION_GET_CONTENT
MIME类型image/*
的应用中选择图片。
答案 1 :(得分:0)
以下是使用ResolveInfo中特定应用的方法: 当您确切知道要使用哪一个并且不希望使用&#34;显示&#34;完成操作时,这将非常有用。对话框。
查询响应Intent.ACTION_GET_CONTENT的应用:
Intent intent= new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
mApps = context.getPackageManager().queryIntentActivities(intent, 0);
mApps将保留所有支持Intent.ACTION_GET_CONTENT意图的应用程序列表。
为您所需的应用消防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);