Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Lista de aplicaciones instaladas por el usuario

¿Cómo obtengo una lista de las aplicaciones que ha instalado el usuario en un dispositivo Android?
Estoy utilizando el siguiente fragmento de código en este momento:

List<PackageInfo> packs = getPackageManager().getInstalledPackages(0); 

Pero devuelve las aplicaciones que han sido instaladas tanto por el fabricante del dispositivo como por mí. ¿Cómo puedo limitarlo para que solo se devuelvan las aplicaciones que instalé?

  • Cómo utilizar GraphicBuffer en android ndk
  • ¿Cómo puedo representar una relación de muchos a muchos con Android Room?
  • Cómo configurar la imagen de fondo para el gráfico de líneas achartengine en android?
  • Cómo utilizar Recyclerview dentro de Scrollview
  • Borrar los datos de la aplicación mediante programación
  • Consulta SQL para la relación de los hijos progenitores
  • Adjuntar TextView a RecyclerView
  • ¿Cómo elegir el tamaño de imagen óptimo para no exceder el presupuesto de VM?
  • 6 Solutions collect form web for “Lista de aplicaciones instaladas por el usuario”

     // Flags: See below int flags = PackageManager.GET_META_DATA | PackageManager.GET_SHARED_LIBRARY_FILES | PackageManager.GET_UNINSTALLED_PACKAGES; PackageManager pm = getPackageManager(); List<ApplicationInfo> applications = pm.getInstalledApplications(flags); for (ApplicationInfo appInfo : applications) { if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) { // System application } else { // Installed by user } } 

    Banderas:

    • GET_META_DATA
    • GET_SHARED_LIBRARY_FILES
    • GET_UNINSTALLED_PACKAGES

    La respuesta de Zelimir es correcta. Pero en algunos casos no le dará todas las aplicaciones de terceros instaladas. ApplicationInfo también tiene el indicador FLAG_UPDATED_SYSTEM_APP que está configurado

    Si esta aplicación se ha instalado como una actualización de una aplicación de sistema integrada

    En mi teléfono inteligente, tales aplicaciones incluyen Amazon Kindle, Adobe Reader, Slacker Radio y otros. Estas aplicaciones no se incluyeron con el teléfono y se instalaron desde Google Play Store. Por lo tanto, pueden considerarse como aplicaciones de terceros.

    Por lo tanto, también puede comprobar el indicador FLAG_UPDATED_SYSTEM_APP .

     final PackageManager packageManager = _context.getPackageManager(); List<ApplicationInfo> installedApplications = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo appInfo : installedApplications) { if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { // IS A SYSTEM APP } if ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) { // APP WAS INSTALL AS AN UPDATE TO A BUILD-IN SYSTEM APP } } 

    Si hago pkgAppsList.get (0), devuelve un objeto ResolveInfo. ¿Cómo obtengo información como el icono y packageName?

    Sólo haz esto:

     ResolveInfo info = pkgAppsList.get(0); ApplicationInfo appInfo = info.activityInfo.applicationInfo; PackageManager packageManager = = getPackageManager(); //And then you retrieve all needed data: Drawable packageIcon = packageManager.getApplicationIcon(applicationInfo); //Icon String packageName = applicationInfo.packageName; //Package name String packageLabel = String.valueOf(packageManager.getApplicationLabel(applicationInfo)) //Package label(app name) 
     final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List pkgAppsList = context.getPackageManager().queryIntentActivities( mainIntent, 0); 

    usuario

    1. pkgAppsList.get(i).activityInfo.packageName para buscar packageName
    2. pkgAppsList.get(i).activityInfo.applicationInfo.loadLabel(getPackageManager()).toString() para fetch app level name

    La respuesta de Nikolai es correcta, pero podría ser optimizada usando un iterador. Esto es lo que me ocurrió:

     /** * Return list of installed user applications */ static List<ApplicationInfo> getUserInstalledApplications(Context context) { // Get installed applications final PackageManager packageManager = context.getPackageManager(); List<ApplicationInfo> installedApplications = packageManager.getInstalledApplications(PackageManager.GET_META_DATA); // Remove system apps Iterator<ApplicationInfo> it = installedApplications.iterator(); while (it.hasNext()) { ApplicationInfo appInfo = it.next(); if ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { it.remove(); } } // Return installed applications return installedApplications; } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.