2012-05-22 18 views
15

Quiero obtener iconos de todas mis aplicaciones instaladas. ¿Puedo obtener esos iconos usando el administrador de paquetes? ¿Hay alguna función para eso? ¿O de otra forma para obtener iconos de todas las aplicaciones instaladas en mapa de bits?Obtener iconos de todas las aplicaciones instaladas en Android

Gracias!

+0

Dado que Android 3.0 es posible que desee obtener un icono de lanzador más grande que no se puede conseguir de la manera que usted describe. Si es así, quizás mi respuesta a la pregunta a continuación puede ayudarlo: http://stackoverflow.com/questions/4600740/getting-app-icon-in-android/16279240#16279240 –

Respuesta

29
try { 
    String pkg = "com.app.my";//your package name 
    Drawable icon = getContext().getPackageManager().getApplicationIcon(pkg); 
    imageView.setImageDrawable(icon); 
} catch (PackageManager.NameNotFoundException ne) { 

} 

Compruebe here para obtener más información.

+0

respuesta perfecta. Te voté @Ponmalar –

3

Trate de esta manera: Hacer una clase llamada PackageInformation:

public class PackageInformation { 

    private Context mContext; 

    public PackageInformation(Context context) { 
     mContext = context; 
    } 

    class InfoObject { 
     public String appname = ""; 
     public String pname = ""; 
     public String versionName = ""; 
     public int versionCode = 0; 
     public Drawable icon; 


     public void InfoObjectAggregatePrint() { //not used yet 
      Log.v(appname, appname + "\t" + pname + "\t" + versionName + "\t" + versionCode); 
     } 

    } 

    private ArrayList <InfoObject> getPackages() { 
     ArrayList <InfoObject> apps = getInstalledApps(false); 
     final int max = apps.size(); 
     for (int i = 0; i < max; i++) { 
      apps.get(i).prettyPrint(); 
     } 
     return apps; 
    } 

    public ArrayList <InfoObject> getInstalledApps(boolean getSysPackages) { 
     ArrayList <InfoObject> res = new ArrayList <InfoObject>(); 
     List <PackageInfo> packs = mContext.getPackageManager().getInstalledPackages(0); 
     for (int i = 0; i < packs.size(); i++) { 
      PackageInfo p = packs.get(i); 
      if ((!getSysPackages) && (p.versionName == null)) { 
       continue; 
      } 
      InfoObject newInfo = new InfoObject(); 
      newInfo.appname = p.applicationInfo.loadLabel(mContext.getPackageManager()).toString(); 
      newInfo.pname = p.packageName; 
      newInfo.versionName = p.versionName; 
      newInfo.versionCode = p.versionCode; 
      newInfo.icon = p.applicationInfo.loadIcon(mContext.getPackageManager()); 
      res.add(newInfo); 
     } 
     return res; 
    } 

} 

cirugía estética de esta distancia en alguna parte y ahora para acceder a la información de su Clase de actividad de trabajo hacer esto:

PackageInformation androidPackagesInfo = new PackageInformation(this); 
ArrayList <InfoObject> appsData = androidPackagesInfo.getInstalledApps(true); 

for (InfoObject info: appsData) { 
    Toast.makeText(MainActivity.this, info.appname, 2).show(); 
    Drawable somedrawable = info.icon; 

} 
3

se me hace la La manera más fácil:

private List<ResolveInfo> installedApps() { 
    final Intent main_intent = new Intent(Intent.ACTION_MAIN, null); 
    main_intent.addCategory(Intent.CATEGORY_LAUNCHER); 
    return package_manager.queryIntentActivities(main_intent, 0); 
} 

Ahora para obtener los iconos, usa esto:

for(ResolveInfo ri : installedApps()) { 
    // to get drawable icon --> ri.loadIcon(package_manager) 
} 
Cuestiones relacionadas