Lanzar aplicación personalizada de Android desde el navegador Android

¿Alguien puede por favor guiarme con respecto a cómo lanzar mi aplicación de Android desde el navegador de Android?

Use un con un elemento . Por ejemplo, para manejar todos los enlaces a twitter.com, pondría esto dentro de su en su AndroidManifest.xml :

     

Luego, cuando el usuario haga clic en un enlace a Twitter en el navegador, se le preguntará qué aplicación usar para completar la acción: el navegador o su aplicación.

Por supuesto, si desea proporcionar una estrecha integración entre su sitio web y su aplicación, puede definir su propio esquema:

     

Luego, en su aplicación web puede poner enlaces como:

  

Y cuando el usuario haga clic en él, su aplicación se lanzará automáticamente (porque probablemente sea la única que pueda manejar my.special.scheme:// type of uris). El único inconveniente de esto es que si el usuario no tiene la aplicación instalada, obtendrá un error desagradable. Y no estoy seguro de que haya alguna manera de verificarlo.


Editar: para responder a su pregunta, puede usar getIntent().getData() que devuelve un objeto Uri . Luego puede usar los métodos Uri.* Para extraer los datos que necesita. Por ejemplo, supongamos que el usuario hizo clic en un enlace a http://twitter.com/status/1234 :

 Uri data = getIntent().getData(); String scheme = data.getScheme(); // "http" String host = data.getHost(); // "twitter.com" List params = data.getPathSegments(); String first = params.get(0); // "status" String second = params.get(1); // "1234" 

Puedes hacer lo anterior en cualquier lugar de tu Activity , pero probablemente quieras hacerlo en onCreate() . También puede usar params.size() para obtener el número de segmentos de ruta en el Uri . Consulte javadoc o el sitio web de desarrolladores de Android para conocer otros métodos de Uri que puede usar para extraer partes específicas.

Por favor vea mi comentario aquí: Haga un enlace en el navegador Android para iniciar mi aplicación?

Recomendamos encarecidamente a las personas que no usen sus propios esquemas, a menos que definan un nuevo esquema de Internet en todo el mundo.

Todas las respuestas anteriores no funcionaron para mí con CHROME al 28 de enero de 2014

mi aplicación se lanzó correctamente desde http://example.com/someresource/ enlaces de aplicaciones como hangouts, gmail, etc., pero no desde el navegador chrome.

para resolver esto, para que se inicie correctamente desde CROMO, debe establecer un filtro de intención como este

         

tenga en cuenta el elemento pathPrefix

su aplicación ahora aparecerá dentro del selector de actividad cuando el usuario solicite http://example.com/someresource/ patrón desde el navegador Chrome haciendo clic en un enlace de los resultados de búsqueda de Google o en cualquier otro sitio web

En mi caso, tuve que establecer dos categorías para el y luego funcionó:

       

Por ejemplo, tienes las siguientes cosas:

Un enlace para abrir su aplicación: http://example.com

El nombre del paquete de tu aplicación: com.example.mypackage

Luego debes hacer lo siguiente:

1) Agregue un filtro de intención a su actividad (puede ser cualquier actividad que desee. Para obtener más información, consulte la documentación ).

               

2) Cree un archivo HTML para probar el enlace o use este método.

 Open your Activity directly (just open your Activity, without a choosing dialog).  Open this link with browser or your programm (by choosing dialog). 

3) Usa Mobile Chrome para probar

4) Eso es todo.

Y no es necesario publicar aplicaciones en el mercado para probar enlaces profundos =)

Además, para obtener más información, consulte la documentación y la presentación útil.

También debe haber agregado al filtro de intención para hacer que la actividad se reconozca correctamente desde el enlace.

El siguiente enlace brinda información sobre cómo iniciar la aplicación (si está instalada) directamente desde el navegador. De lo contrario, abre directamente la aplicación en Play Store para que el usuario pueda descargar sin problemas.

https://developer.chrome.com/multidevice/android/intents

Sí, Chrome busca en lugar de buscar esquema. Si desea iniciar su aplicación a través del esquema de URI, use esta aplicación de utilidad genial en Play Store. Me salvó el día 🙂 https://play.google.com/store/apps/details?id=com.naosim.urlschemesender

Tenga en cuenta que si su ícono desaparece de android launcher cuando implementa esta función, entonces debe dividir intent-filter.

              

El enfoque de Felix para manejar enlaces profundos es el enfoque típico para manejar enlaces profundos. También te sugiero que revises esta biblioteca para manejar el enrutamiento y el análisis de tus enlaces profundos:

https://github.com/airbnb/DeepLinkDispatch

Puede usar anotaciones para registrar su Actividad para un URI de enlace profundo en particular, y extraerá los parámetros por usted sin tener que hacer el truco habitual de obtener los segmentos de ruta, hacerla coincidir, etc. Simplemente podría anotar y actividad como esta :

 @DeepLink("somePath/{someParameter1}/{someParameter2}") public class MainActivity extends Activity { ... } 

Hola, tengo la solución. No configuré la categoría como “Predeterminado”. También estaba usando la actividad principal para los datos de intención. Ahora estoy usando una actividad diferente para los datos de intención. Gracias por la ayuda. 🙂

Debe agregar un pseudo-nombre de host a CALLBACK_URL ‘aplicación: //’ no tiene sentido como una URL y no se puede analizar.

example.php:

       

Xamarin puerto de la respuesta de Felix

En su MainActivity , agregue esto ( docs: Android.App.IntentFilterAttribute Class ):

 .... [IntentFilter(new[] { Intent.ActionView }, Categories = new[] { Intent.CategoryDefault, Intent.CategoryBrowsable }, DataScheme = "my.special.scheme") ] public class MainActivity : Activity { .... 

Xamarin agregará lo siguiente en AndroidManifest.xml por usted:

         

Y para obtener params ( probé en OnCreate of MainActivity ):

 var data = Intent.Data; if (data != null) { var scheme = data.Scheme; var host = data.Host; var args = data.PathSegments; if (args.Count > 0) { var first = args[0]; var second = args[1]; ... } } 

Por lo que sé, arriba se puede agregar en cualquier actividad, no solo MainActivity

Mire la respuesta de @JRuns aquí . La idea es crear html con su esquema personalizado y subirlo a alguna parte. Luego, si haces clic en tu enlace personalizado en tu archivo html, serás redirigido a tu aplicación. Usé este artículo para Android. Pero no olvides poner el nombre completo Name = "MyApp.Mobile.Droid.MainActivity" en tu actividad objective.