Instalar una aplicación ubicada en GooglePlay desde NFC

Trabajando con Lollipop, tengo una aplicación de propietario de dispositivo que se instala con NFC en el momento de la provisión.
Lo que necesito ahora es manejar actualizaciones automáticas para mi aplicación, desde Google Play para confiar en el sistema de actualización de aplicaciones Android estándar …

Hasta ahora puedo imaginar 2 maneras de hacer esto, pero no sé cómo manejar ninguna de ellas:

  1. en mi instalación de NFC constante DISPOSITIVO EXTRA PROVISIONING ADMIN PACKAGE DOWNLOAD LOCATION instalar la aplicación directamente desde la Play Store en lugar de la url en mi propio servidor dev.
    Sin embargo, esta constante necesidad de manejar la url de un archivo apk, y no encontré ninguna forma oficial de obtener apk instalar directamente desde Play Store? (ya que será una aplicación de producción en el futuro no estoy interesado en hacks)
  2. siga instalando el apk desde el servidor de dev, pero luego permita que la aplicación se actualice con su hermano pequeño ubicado en Play Store con el mismo nombre de paquete.
    Para decirlo de otra manera: ¿Sería posible instalar una v1 apk desde una ubicación personalizada, luego poner una v2 en la PlayStore … y dejar que la magia se haga realidad?

Me alegraría saber si alguien puede compartir experiencias sobre tales procedimientos. ¡Gracias por leer!


EDITAR después de @Stephan Branczyk sugerencia podría hacer algunas pruebas más, aquí es lo que hice y los resultados:

1 – En el aprovisionamiento de NFC reemplazé el apk url con snep: //my.app.packagename sin suerte; sólo da un error sin mucha explicación.

2 – He reemplazado esta url por un enlace PlayStore: https://play.google.com/store/apps/details?id=my.app.packagename, pero da un error de suma de comprobación si uso la suma de comprobación calculada localmente o la suma de comprobación dada en los detalles de GooglePlay apk. No parece tan lejos de la meta, pero no pude hacer que funcione.

3 – Finalmente volví a mi primera solución, un auto-hospedado apk versión 1 … pero esta vez traté de poner en la PlayStore una versión más reciente 2 de la aplicación con el mismo nombre de paquete exactamente … Eso me llevó a cosas extrañas:

  • Al principio, mi aplicación no apareció en ninguna parte de la aplicación PlayStore local, pero cuando la busqué en Google Play, apareció con la insignia verde "instalada" y me propuso hacer una actualización.
  • Luego, después de esta primera actualización manual, la aplicación está en v2, bonita y mejor: aparece bien listada en mi PlayStore.
  • Optimista, he subido una v3 de la aplicación … sólo para ver si mi PlayStore actualizaría automáticamente mi aplicación (como ocurre con todos los demás), pero lamentablemente no hay suerte: incluso si mi aplicación todavía aparece en la playstore, y proponer el botón "actualizar" … nunca se actualiza por sí mismo como debería; Todavía necesito hacer clic en él manualmente.

¿No es un comportamiento extraño? Si algunos tienen ideas al respecto, realmente necesito poder confiar en las funcionalidades de Play Store pero hasta ahora no hay suerte, y no puedo creer que la distribución de la aplicación Device-Owner no sea compatible con PlayStore?


Por si acaso, FYI aquí es el tipo de código de aprovisionamiento que estoy usando:

try { Properties p = new Properties(); p.setProperty( DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, "my.app.packagename"); p.setProperty( DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION, "http://www.example.com/myDeviceOwnerApp.apk"); p.setProperty( DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM, "U55o3fO0cXQtUoQCbQEO9c_gKrs"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); OutputStream out = new ObjectOutputStream(bos); p.store(out, ""); final byte[] bytes = bos.toByteArray(); NdefMessage msg = new NdefMessage(NdefRecord.createMime( DevicePolicyManager.MIME_TYPE_PROVISIONING_NFC, bytes)); return msg; } catch (Exception e) { throw new RuntimeException(e); } 

Escriba su nombre de paquete como un registro AAR en la etiqueta.

Para confirmar que esta funcionalidad funciona, utilice esta aplicación para escribir la etiqueta con.

Es necesario establecer la codificación de base64 SHA1 o SHA256 (desde M adelante) del apk en el

EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM

cuando el aprovisionamiento a través de NFC de lo contrario el dispositivo aprovisionado no aceptará la URL para su descarga.

También vea esta respuesta para codificar adecuadamente la suma de comprobación.

  • NFC no puede enviar datos de Android 4.0.3
  • KitKat: Cómo enrutar las APDU a la tarjeta SIM
  • NFC Mifare Ultralight etiquetas de escritura
  • ¿Cómo encuesta de Android para dispositivos NFC
  • ¿Cómo lees el ID único de una etiqueta NFC en android?
  • Android: Cambiar la configuración NFC (on / off) mediante programación
  • Cómo almacenar datos en Secure Element en android
  • Bidireccional bidireccional de Android
  • Emulación de tarjeta de host en Android (4.4 / KitKat y superior) con Nexus 5
  • Lectura de datos de la etiqueta NFC
  • Etiqueta Android NFC recibida con el receptor de difusión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.