¿Cómo comprobar mediante programación si una aplicación está instalada o no en Android?

Hemos instalado las aplicaciones de forma programática.

  1. Si la aplicación ya está instalada en el dispositivo, la aplicación se abre automáticamente.
  2. De lo contrario, instale la aplicación en particular.

Guíame. No tengo idea. Gracias.

Pruebe con esto:

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Add respective layout setContentView(R.layout.main_activity); // Use package name which we want to check boolean isAppInstalled = appInstalledOrNot("com.check.application"); if(isAppInstalled) { //This intent will help you to launch if the package is already installed Intent LaunchIntent = getPackageManager() .getLaunchIntentForPackage("com.check.application"); startActivity(LaunchIntent); Log.i("Application is already installed."); } else { // Do whatever we want to do if application not installed // For example, Redirect to play store Log.i("Application is not currently installed."); } } private boolean appInstalledOrNot(String uri) { PackageManager pm = getPackageManager(); try { pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); return true; } catch (PackageManager.NameNotFoundException e) { } return false; } } 

Solución algo más limpia que la respuesta aceptada (basada en esta pregunta ):

 public static boolean isAppInstalled(Context context, String packageName) { try { context.getPackageManager().getApplicationInfo(packageName, 0); return true; } catch (PackageManager.NameNotFoundException e) { return false; } } 

Elegí ponerlo en una clase auxiliar como una utilidad estática. Ejemplo de uso:

 boolean whatsappFound = AndroidUtils.isAppInstalled(context, "com.whatsapp"); 

Esta respuesta muestra cómo obtener la aplicación de Play Store si falta la aplicación, aunque es necesario tener cuidado en dispositivos que no tienen Play Store.

El código anterior no funcionó para mí. El siguiente enfoque funcionó.

Cree un objeto Intent con la información apropiada y luego compruebe si el Intent es callable o no usando la siguiente función:

 private boolean isCallable(Intent intent) { List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } 

Si conoce el nombre del paquete, entonces esto funciona sin usar un bloque try-catch o iterar a través de un montón de paquetes:

 public static boolean isPackageInstalled(Context context, String packageName) { final PackageManager packageManager = context.getPackageManager(); Intent intent = packageManager.getLaunchIntentForPackage(packageName); if (intent == null) { return false; } List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; } 

Este código comprueba que la aplicación está instalada, pero también comprueba si está habilitada.

 private boolean isAppInstalled(String packageName) { PackageManager pm = getPackageManager(); try { pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); return pm.getApplicationInfo(packageName, 0).enabled; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return false; } } 

Creo que usar el patrón try / catch no es muy bueno para el rendimiento. Yo aconsejo usar esto:

 public static boolean appInstalledOrNot(Context context, String uri) { PackageManager pm = context.getPackageManager(); List<PackageInfo> packageInfoList = pm.getInstalledPackages(PackageManager.GET_ACTIVITIES); if (packageInfoList != null) { for (PackageInfo packageInfo : packageInfoList) { String packageName = packageInfo.packageName; if (packageName != null && packageName.equals(uri)) { return true; } } } return false; } 
  • Volver a firmar un Android Apk
  • Tome la copia de seguridad de todos los archivos de instalación de apk en sdcard de forma programada en android
  • Verificación de firma de Android
  • Error de Play Store "Subiste un APK firmado con un certificado inseguro"
  • Soporte múltiple de apk para Android TV y teléfono
  • ¿Dónde puedo encontrar el archivo .apk en mi dispositivo, cuando descarga cualquier aplicación e instalar?
  • Ubicación del archivo .apk
  • Error de "archivo de paquete no firmado correctamente": detecte si ocurre o no con la aplicación de Google Play.
  • Actualizar archivo apk en Google Play
  • Error: archivos duplicados durante el envasado de APK
  • Paquete de dos apk en un solo apk?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.