Obtener lista de aplicaciones de Android instaladas

Hola, quiero obtener una lista de todas las aplicaciones instaladas en el dispositivo de los usuarios. He estado buscando en Google por mucho tiempo, pero no puedo encontrar lo que quiero, pero este vínculo fue el más cercano y funciona bien, excepto que soy nuevo y no entiendo. cómo usar el método getPackages (); y crea una lista con eso

http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon

Cualquier ayuda sobre cómo crear la lista real sería una gran ayuda. Tengo todo ese código que ya no puedo obtener en la lista para mostrar realmente gracias por cualquier ayuda.

Estuve trabajando en algo como esto recientemente. Una cosa que diré por adelantado es estar seguro y realizar esto en un hilo separado: consultar la información de la aplicación es LENTO. A continuación, obtendrá una lista de TODAS las aplicaciones instaladas. Esto incluirá muchas aplicaciones de sistema en las que probablemente no estés interesado.

PackageManager pm = getPackageManager(); List apps = pm.getInstalledApplications(0); 

Para limitarlo solo a las aplicaciones del sistema instaladas o actualizadas por el usuario (por ejemplo, Maps, GMail, etc.), utilicé la siguiente lógica:

 List installedApps = new ArrayList(); for(ApplicationInfo app : apps) { //checks for flags; if flagged, check if updated system app if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { installedApps.add(app); //it's a system app, not interested } else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { //Discard this one //in this case, it should be a user-installed app } else { installedApps.add(app); } } 

EDITAR: Además, para obtener el nombre y el ícono de la aplicación (que es probablemente lo que más demora, no he hecho ninguna inspección profunda), usa esto:

 String label = (String)pm.getApplicationLabel(app); Drawable icon = pm.getApplicationIcon(app); 

installedApps debe tener una lista completa de las aplicaciones que necesita, ahora. Espero que esto ayude, pero puede que tenga que modificar la lógica un poco dependiendo de qué aplicaciones necesite devolver. Una vez más, es LENTO, pero es algo en lo que tienes que trabajar. Es posible que desee construir un caché de datos en una base de datos si es algo a lo que accederá con frecuencia.