Solución para Chrome en Android no se activa cuando se hace clic en los vínculos

Estoy trabajando en una aplicación de Android que maneja intentos para ciertos enlaces http (s). Funciona en la mayoría de los casos, pero no para los clics en los enlaces de Chrome, debido a esta característica de error / error . En resumen, Chrome no transmite una intención para esos clics. : /

Que se puede arreglar eventualmente, pero mientras tanto, ¿alguien sabe una solución?

Si yo controlaba los enlaces ellos mismos, yo podría usar mi propio esquema HTTP, por ejemplo myapp: // …, o podría usar JavaScript para hacer un clic de botón , los cuales envían la intención … pero no controlo los enlaces.

En concreto, me gustaría manejar enlaces como http://github.com/snarfed . La definición de mi actividad en AndroidManifest.xml es la siguiente. Recibe correctamente difusiones intencionales para este tipo de clics de enlace de otras aplicaciones, pero no desde Chrome.

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

Es necesario incluir el esquema, host y pathPrefix en cada punto de datos.

Ejemplo del manifiesto apropiado:

 <activity android:name=".PhotostreamActivity" android:label="@string/application_name"> <!-- ... --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="flickr.com" android:pathPrefix="/photos/" /> <data android:scheme="http" android:host="www.flickr.com" android:pathPrefix="/photos/" /> </intent-filter> </activity> 

Este ejemplo se toma de una aplicación Romain Guy juntos y referenciados en una pregunta duplicada aquí:

Interceptar enlaces desde el navegador para abrir mi aplicación para Android

Un par de advertencias a tener en cuenta, parece que usted necesita para matar a Chrome en el fondo antes de la intención de cartografía toma efecto Y si escribe la url directamente, la aplicación no se permitirá a consumir, sólo cuando es un enlace que ofrece Chrome la acción hasta las aplicaciones.

Parece que Chrome solo activa intentos si el filtro de intenciones tiene una ruta de acceso, pathPrefix o pathPattern. Por lo tanto, para filtrar todo el dominio, he resuelto este problema mediante la adición de android:pathPattern=".*" , Así:

 <intent-filter android:priority="999"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="mydomain.com" android:scheme="http" android:pathPattern=".*" /> <data android:host="www.mydomain.com" android:scheme="http" android:pathPattern=".*" /> </intent-filter> 
  • Herramientas para desarrolladores de Chrome para Android
  • Forzar la ocultación de la barra de direcciones en Chrome en Android
  • HTML 5 tipo de entrada "número" con step = "any" => Sin separador decimal en Chrome Soft-Keyboard
  • Iniciar Chrome en modo de pantalla completa
  • Inicios de sesión de Autofill en Chrome mediante AccessibilityService Android
  • Vídeo HTML5 en teléfonos móviles - Chrome 55 no se reproduce automáticamente y no se activa?
  • Android Historial de navegación dejando fuera sólo algunos sitios
  • Chrome en Android no respeta el índice z para los clics de enlace
  • Android Play Store mercado: // enlace ya no funciona?
  • ¿Qué es una solución alternativa para Chrome para el comportamiento incorrecto de clientX y clientY de Android?
  • ¿Cómo puedo extraer y ver las cookies de Android Chrome?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.