que - Lanzamiento de una aplicación de Android personalizada desde el navegador de Android/Chrome
que es el feed en el celular (3)
En primer lugar, mi pregunta es muy similar a this , this y this . La documentación de Android para lo que estoy tratando de lograr está here . No pude hacer que esto funcione con estos recursos, así que no marques esto como duplicado ya que no lo es.
Tengo un sitio web y una aplicación de Android. El usuario podrá escanear códigos QR que contengan enlaces como http://mywebsite.com/map/ . Cuando el usuario intente abrir este enlace, quiero que Android le muestre un diálogo de selección en el que puede elegir abrir ese enlace utilizando mi aplicación. Si mi aplicación no está instalada, debería pasar al sitio web especificado.
Sé que Chrome permite esto abriendo el cuadro de diálogo del selector cuando el usuario navega a esa dirección. Por ejemplo, intente descargar la aplicación Stack Exchange e ir a esta pregunta en Chrome. Mostrará esto:
He agregado el siguiente código en AndroidManifest.xml después de seguir la sugerencia en las respuestas antes mencionadas:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="mywebsite.com"
android:path="/map"
android:scheme="http" />
<data
android:host="mywebsite.com"
android:path="/animals"
android:scheme="http" />
<data
android:host="mywebsite.com"
android:path="/articles"
android:scheme="http" />
</intent-filter>
Además, intenté agregar android: mimeType = "text / plain" a los datos, pero no sirvió de nada.
El problema es que cuando voy a http://mywebsite.com/map o http://mywebsite.com/map/ Chrome acaba de abrir la página web sin mostrar el cuadro de diálogo del selector.
Me gustaría mencionar:
- siguiendo la documentación de Android, he agregado este código dentro de una de las estructuras de actividad en AndroidManifest.xml. Como no estoy seguro de que este sea el lugar perfecto para agregarlo, también intenté agregarlo fuera de la estructura de la aplicación y directamente dentro de la estructura de la aplicación, pero no funcionó.
- este es el único código que he implementado para que esto funcione. Si se necesita algo más, por favor avíseme. Por lo que entiendo, solo es necesario agregar un href a la página web cuando se usan esquemas personalizados
- No quiero usar un esquema personalizado para lograr esto
- Estoy desarrollando un Nexus 4, con Android 4.4.2 (último)
Debes configurarlo de esta manera:
<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:host="example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
<data
android:host="www.example.com"
android:pathPrefix="/someresource/"
android:scheme="http" />
</intent-filter>
Tenga en cuenta que en su caso, necesitaría usar android: pathPrefix en lugar de android: path.
En mi caso, la URL del sitio es: http://www.example.org/mobile/
así que poner estos códigos en AndroidManifest.xml dentro de la actividad
<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:host="www.example.org"
android:pathPrefix="/mobile/"
android:scheme="http" />
</intent-filter>
Aquí,
esquema -> Protocolo de sitio particular
host -> URL del sitio exacto con WWW
pathprefix -> Subruta de su sitio si está disponible
Ahora,
Puede buscar con chrome / etc android browser''search box como example y luego abrir el diálogo elegido ... !!
Solo para estar seguro, debe restablecer las preferencias de su aplicación en caso de que haya configurado accidentalmente abrir siempre el enlace en cromo en lugar de mostrar el cuadro de diálogo del selector. Una vez que se usa "Siempre" para abrir el uri coincidente, nunca se mostrará el selector.
En segundo lugar, puede tener tantos elementos de datos en el filtro de intención como desee, pero no es necesario repetir la información. Puedes hacer lo mismo así:
<data android:host="mywebsite.com"/>
<data android:scheme="http"/>
<data android:path="/map"/>
<data android:path="/animals"/>
<data android:path="/articles"/>
Pero tenga en cuenta que para la ruta, puede usar un comodín
<data android:path="/.*"/>
Considere agregar un adicional
<data android:host="www.mywebsite.com"/>
Y, por último, puede que no desee mostrar el cuadro de diálogo del selector, sino abrir una intención / actividad específica de la aplicación directamente. En su sitio web, si detecta el agente de usuario de Android, puede crear una URL de enlace de esta manera:
<a href="intent://mywebsite.com/articles#Intent;package=com.myapp;scheme=http;end;"/>
Mira aquí para más detalles ¿Cómo abro cualquier aplicación desde mi navegador web (Chrome) en Android? ¿Qué tengo que hacer con el enlace A Href?
Tenga en cuenta que con este método si la aplicación no está instalada, el usuario será llevado a la tienda de Google Play para el paquete de la aplicación especificada.
Si aún tiene problemas, verifique la prioridad del filtro de intención. http://developer.android.com/guide/topics/manifest/intent-filter-element.html