2011-07-27 66 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)); 
} 
相關問題