【发布时间】:2016-12-19 21:16:44
【问题描述】:
目前我已经编写了一个代码来加载所有能够从手机查看图像的应用程序。
public static List<String> getAllCapableForFileViewing (Context context, String mimeType) {
List<String> packages = new ArrayList<>();
PackageManager pm = context.getPackageManager();
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_VIEW);
sendIntent.setType(mimeType);
List<ResolveInfo> resolveInfoList = context.getPackageManager()
.queryIntentActivities(sendIntent, 0);
for (ResolveInfo resolveInfo : resolveInfoList) {
packages.add(resolveInfo.activityInfo.packageName);
System.out.println(resolveInfo.activityInfo.packageName);
System.out.println(resolveInfo.activityInfo.applicationInfo.className);
System.out.println(resolveInfo.activityInfo.name);
System.out.println("");
}
return packages;
}
当我尝试列出所有应用程序时,其中一个列出了两个集合,例如微信,微信朋友圈。显然,它有两个活动可以处理图像以供查看。问题是两者的名字是同一个“微信”。
另外?即使它可以消耗我传入的内容,但它们并不是真正用于查看图像的应用程序,例如图库应用程序。有没有办法识别它们。我知道这可能是不可能的。
【问题讨论】:
标签: android android-activity package launch