2011-07-27 21 views
9

He hecho un pequeño método para mostrar el nombre de la aplicación instalada en Android. Pero cuando le doy el atributo "nombre" muestra un error de excepción. Y cuando doy "packageName" el método ejecuta perfectamente y muestra el nombre del paquete en una lista¿Cómo obtener el nombre de la aplicación instalada en 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); 
     } 

} 

En el código anterior cuando doy String appname=pk.packageName.toString() funciona bien, pero cuando le doy String appname=pk.name.toString() el programa está lanzando un error de excepción. Por favor, ayúdame a resolver el problema.

Respuesta

20

Supongo que su código arroja una NullPointerException porque el campo name es nulo. En cualquier caso, lo que es probable que desee es:

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

, gracias. Exactamente lo que estaba buscando. – user3734429

+0

Bien, gracias. ¿Alguna idea de por qué es nula? – charlag

+0

@charlag_khan - ¿Quiere decir 'pk.name'? Probablemente porque el manifiesto no declara un atributo 'android: name'. Ese nombre solo se usa cuando la aplicación necesita definir su propia subclase 'Application'. –

0

mediante el uso de esto se puede conseguir instalado nombres de los paquetes de aplicaciones y nombres de aplicaciones

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