问题检索Android应用程序的包名称

时间:2014-12-19 22:12:28

标签: java android package

我正在尝试获取已映射的多个应用的​​包名称。我想使用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;

1 个答案:

答案 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);
}