我正在尝试获取已映射的多个应用的包名称。我想使用ResolveInfo.activityInfo.packageName
访问它们,但我遇到了问题,尤其是activityInfo
,因为Java一直告诉我"static method cannot be referenced from a static context."
我假设我需要创建一个新对象然后访问每个应用程序的包名称,但我只是不知道如何去做。
以下是我想要打印此信息的代码的一部分:
public void printPackageName() {
Iterator<Map.Entry<String, ResolveInfo>> entries = selectedMap.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<String, ResolveInfo> entry = entries.next();
String pname = ResolveInfo.activityInfo.packageName;
System.out.println("App info: " + pname);
}
}
我见过类似问题的解决方案,用户想要主目录的包名。在他们的情况下,问题已通过以下代码解决。我假设我可能会为了我的目的修改此代码但我没有使用意图。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
ResolveInfo resolveInfo = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String currentHomePackage = resolveInfo.activityInfo.packageName;
答案 0 :(得分:0)
ResolveInfo
是一个班级。您需要一个实例才能访问activityInfo
。此外,ActivityInfo
不包含名为packageName
的成员,但您可能需要resolvePackageName
,例如:
while (entries.hasNext()) {
Map.Entry<String, ResolveInfo> entry = entries.next();
String pname = entry.getValue().resolvePackageName;
System.out.println("App info: " + pname);
}