¿Cómo detectar si la Google Play Store está descargando / instalando una aplicación específica?

Muchas aplicaciones proporcionan recomendaciones para instalar otras aplicaciones hechas por el desarrollador o los socios del desarrollador. Las recomendaciones son solo enlaces a Play Store desde donde se puede instalar la aplicación recomendada.

No quiero proporcionar una recomendación para la aplicación X si:

  • La aplicación X ya está instalada
  • App X está en proceso de instalación (por ejemplo, descargar en Google Play)

Detectar si X está instalado es fácil, pero no puedo encontrar ninguna API para leer el estado de descarga / instalación desde Google Play. ¿Hay alguna manera de detectar si el usuario está en proceso de instalar la aplicación X?

¿Hay alguna manera de detectar si el usuario está en proceso de instalar la aplicación X?

Lo más cercano que obtendrá es usar NotificationListenerService .

De los documentos:

Servicio que recibe llamadas del sistema cuando se publican o eliminan nuevas notificaciones.

Sin embargo, teniendo en cuenta que este Service se agregó recientemente en el nivel 18 de API y en su caso de uso, podría considerar utilizar BroadcastReceiver y escuchar cuando se llaman android.intent.action.PACKAGE_ADDED y android.intent.action.PACKAGE_REMOVED . De esta manera, una vez que una aplicación se instala o se elimina, puede hacer lo que quiera con el nombre del paquete, como proporcionar un enlace a Play Store.

He aquí un ejemplo:

Receptor de radiodifusión

 public class PackageChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent == null || intent.getData() == null) { return; } final String packageName = intent.getData().getSchemeSpecificPart(); // Do something with the package name } } 

En tu AndroidManifest

 <receiver android:name="your_path_to.PackageChangeReceiver" > <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> 

Soy consciente de una manera de hacerlo. Sin embargo, requerirá que inicie la descarga desde una URL.

La simple idea detrás es usar

 getContentLength() 

Para ver la longitud del contenido de la aplicación en bytes.

Entonces, simplemente puede usar

 YouInputStream.read(TheData) 

Para ver el progreso de la descarga.

En realidad, hay una respuesta mucho más detallada sobre cómo hacer esto en Descargar un archivo con Android y mostrar el progreso en un ProgressDialog

En esa nota, tal vez usted puede obtener acceso al socket en el que se descarga la aplicación y luego seguir los mismos pasos de arriba. No tengo ninguna experiencia con este tho.

  • App Invites for Android: Error al enviar el mensaje con el ID de cliente del contenedor que falta
  • Liberar la aplicación de Android firmada, Google Plus Login y Google Map no funcionan
  • ¿Puedo usar google analytics en una aplicación lanzada para la tienda de bomberos kindle?
  • Error de Google Play Services - Informe de errores Incomprensible
  • Los servicios de reproducción de Google están desactualizados. Requiere 5089000 pero fue encontrado 3136130
  • ¿Es posible utilizar GCM sin la cuenta de Google y Google Play Services en el dispositivo?
  • Google Play Services GCM 9.2.0 pide "actualizar" a la versión original
  • Los servicios de Google Play están desactualizados. Requiere 3025100 pero encontrado 2012110
  • ¿Cómo comprobar la versión de servicios de Google Play?
  • GcmNetworkManager manejo de tareas peródicas
  • No se pudo resolver: com.google.android.gms: play-services-cast: 9.8.00
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.