Los enlaces de aplicaciones no funcionan en Android

Mi aplicación define los filtros de intención para manejar URL desde mi sitio definido por

<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="www.host.com" android:scheme="http"/> </intent-filter> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="www.host.com" android:scheme="https"/> </intent-filter> 

La aplicación detecta correctamente las URL del host correcto, pero consulta al usuario si desea abrirlas en la aplicación o en el navegador. He intentado usar la verificación de enlaces de la aplicación como se especifica aquí. Https://developer.android.com/training/app-links/index.html

Como se ve en los registros de mi servidor, cuando se instala el dispositivo de la aplicación consulta /well-known/assetlinks.json y responde con un estado 200. Comprobación del archivo de activos digitales

Https: // digitalassetlinks.googleapis.com/v1/statements:list?source.web.site= https: // <dominio1>: <puerto> & relation = delegate_permission / common.handle_all_urls

API y no encontró errores.

El SHA256 en el archivo assetlinks.json se obtuvo utilizando

Keytool -list -v-keystore my-release-key.keystore

La misma .keystore de la que se firmó la aplicación.

Al adb shell dumpsys package d devuelve que el estado de verificación del enlace es "ask", lo que significa que la verificación ha fallado. ¿Por qué la verificación falla?

Para mí, se trataba de comprobar todos los conceptos básicos:

  1. Verifique que mi archivo assetLinks sea bueno con esta herramienta: (reemplace domain1: puerto con su dominio) https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://domain1:port&relation=delegate_permission /common.handle_all_urls
  2. Prueba siempre con un APK firmado
  3. Asegúrese de que el dispositivo de prueba está ejecutando Android 6.0 o posterior (este es el que me mordió porque se me olvidó – en las versiones anteriores de Android, siempre obtiene la solicitud del usuario)

En mi caso, adb shell dumpsys package d reveló que el packageName se configuró incorrectamente en assetlinks.json . Había usado el valor del atributo del package de mi etiqueta de manifest en AndroidManifest.xml , pero debería haber utilizado el valor android.defaultConfig.packageId en mi archivo build.gradle .

Ventana de selección de la aplicación del sistema en dos casos

1) El usuario realiza cambios en las configuraciones relacionadas con los enlaces de apertura accediendo a la configuración> aplicaciones> icono de rueda de desplazamiento> abrir enlaces> seleccionar una aplicación> abrir enlaces soportados> elegir cada vez.

2) La aplicación predeterminada no está establecida por el usuario y la verificación automática no está habilitada en una de las aplicaciones compatibles de la aplicación

Creo que en su caso la verificación automática está habilitada, por favor, compruebe la configuración del usuario.

Oh Gawd para nosotros fue finales de línea de Windows!

Las pruebas realizadas con " https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.port > & relation = delegate_permission / common.handle_all_urls" resultaron invaluables ya que nos dieron un "Could No analizar lista de instrucciones (no válido JSON) "error que nos llevó al problema.

SUGERENCIA: Fue bueno usar el botón "Guardar archivo" en el asistente de enlaces de aplicaciones de Android Studio en lugar de copiar y pegar como lo hicimos – de esa manera genera el archivo en sí y está garantizado que no tenga este problema.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.