2011-07-27 67 views
9

我已经做了一个小的方法来显示Android中安装的应用程序名称。但是,当我给“名称”属性显示异常错误。当我给“软件包名”的方法完全执行,并在列表中如何在android中获取已安装的应用程序名称?

private void getInstalledApps() { 
    // TODO Auto-generated method stub 
    PackageManager packageManager=this.getPackageManager(); 
     List<ApplicationInfo applist=packageManager.getInstalledApplications(0); 


     Iterator<ApplicationInfo> it=applist.iterator(); 
     while(it.hasNext()){ 
      ApplicationInfo pk=(ApplicationInfo)it.next(); 

      String appname=pk.name.toString(); 

      installedapplist.add(appname); 
     } 

} 

在上面的代码显示包的名称时,我给String appname=pk.packageName.toString()它工作正常,但当我给String appname=pk.name.toString()程序抛出异常错误。请帮我解决问题。

回答

20

我的猜测是你的代码抛出了NullPointerException,因为name字段为空。在任何情况下,你可能想要的是:

String appname = packageManager.getApplicationLabel(pk).toString() 
+0

谢谢。正是我在找什么。 – user3734429

+0

不错,谢谢。任何想法为什么它是空的? – charlag

+0

@charlag_khan - 你的意思是'pk.name'?可能是因为清单没有声明'android:name'属性。该名称仅在应用程序需要定义它自己的“应用程序”子类时使用。 –

0

利用这一点,你可以得到安装的应用程序包名称和应用程序名称

List<PackageInfo> packageInfos=getPackageManager().getInstalledPackages(0); 
for (PackageInfo packageInfo:packageInfos) 
{ 
     Log.d(TAG,"packageName "+packageInfo.packageName); 
     Log.d(TAG,"appname "+getPackageManager().getApplicationLabel(packageInfo.applicationInfo)); 
} 
相关问题