Android: 如何获取正确的应用名称?
Android: How to get the right application name?
目前我已经编写了一个代码来加载所有能够查看来自 phone 图像的应用程序。
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;
}
当我试图列出所有应用程序时,其中一个列出了两个应用程序,例如微信,微信朋友圈。显然它有两个活动可以处理图像以供查看。问题是两者的名字是一样的"WeChat"。
另外?即使它可以使用我传入的内容,但它们并不是真正用于查看图像的应用程序,例如图库应用程序。有没有办法识别它们。我知道这可能是不可能的。
The problem is the name of the two are the same "WeChat".
好吧,这最终取决于该应用程序的开发人员。但是,请查看 ResolveInfo
的 labelRes
,因为这可能是更好用的标签(例如,从 <intent-filter>
中提取)。
Is there a way to recognise them
欢迎您尝试 using CATEGORY_APP_GALLERY
,尽管这可能会导致漏报(即,用户希望显示但实际未显示的应用)。
目前我已经编写了一个代码来加载所有能够查看来自 phone 图像的应用程序。
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;
}
当我试图列出所有应用程序时,其中一个列出了两个应用程序,例如微信,微信朋友圈。显然它有两个活动可以处理图像以供查看。问题是两者的名字是一样的"WeChat"。
另外?即使它可以使用我传入的内容,但它们并不是真正用于查看图像的应用程序,例如图库应用程序。有没有办法识别它们。我知道这可能是不可能的。
The problem is the name of the two are the same "WeChat".
好吧,这最终取决于该应用程序的开发人员。但是,请查看 ResolveInfo
的 labelRes
,因为这可能是更好用的标签(例如,从 <intent-filter>
中提取)。
Is there a way to recognise them
欢迎您尝试 using CATEGORY_APP_GALLERY
,尽管这可能会导致漏报(即,用户希望显示但实际未显示的应用)。