Interceptar enlaces desde el navegador para abrir mi aplicación de Android
Me gustaría poder solicitar a mi aplicación que abra un enlace cuando el usuario haga clic en una URL de un patrón dado en lugar de permitir que el navegador lo abra. Esto podría ser cuando el usuario está en una página web en el navegador o en un cliente de correo electrónico o dentro de un WebView en una aplicación recientemente recaudada.
Por ejemplo, haz clic en un enlace de YouTube desde cualquier parte del teléfono y tendrás la oportunidad de abrir la aplicación de YouTube.
- Abrir URL en WebView en lugar del explorador predeterminado
- Android responde a la URL en intención
- Cómo agregar o eliminar el filtro intención mediante programación en android?
- Filtro de intención pathPrefix con '#' no funciona
- Pasar los datos de referencia a través de la intención de cromo de google play
¿Cómo puedo lograr esto para mi propia aplicación?
- Andorid Deeplinking no funciona con múltiples esquemas
- actividad de los padres con intenciones implícitas
- Intent Filtros y android: pathPattern
- Android: cómo obtener información de la ubicación de los extras del paquete de intenciones cuando se utiliza LocationManager.requestLocationUpdates ()
- ¿No deberían las referencias de cadena trabajar para los nombres de acciones de un filtro de intenciones en el AndroidManifest?
- Registrar como reproductor de música
- El atributo pathPrefix de Deeplink de Android se está omitiendo
- Uso de Monkey en una subactividad solamente (depuración de Android)
Utilice un android.intent.action.VIEW de la categoría android.intent.category.BROWSABLE .
Desde AndroidManifest.xml de la aplicación Photostream de Romain Guy,
<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>
Una vez dentro, estás en la actividad , necesitas buscar la acción, y luego haz algo con la URL que te han entregado. El método Intent.getData()
le da un Uri.
final Intent intent = getIntent(); final String action = intent.getAction(); if (Intent.ACTION_VIEW.equals(action)) { final List<String> segments = intent.getData().getPathSegments(); if (segments.size() > 1) { mUsername = segments.get(1); } }
Cabe señalar, sin embargo, que esta aplicación es un poco fuera de fecha (1.2), por lo que puede encontrar hay mejores maneras de lograr esto.
Hay algunas bibliotecas analizar los parámetros de url automáticamente.
como
https://github.com/airbnb/DeepLinkDispatch
Un
https://github.com/mzule/ActivityRouter
El más tarde es escrito por mí. Que puede analizar parámetros de tipo dado, no siempre String.
Ejemplo
@Router(value = "main/:id" intExtra = "id") ... int id = getIntent().getInt("id", 0);
private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { setUrlparams(url); if (url.indexOf("pattern") != -1) { // do something return false; } else { view.loadUrl(url); } return true; } }