una son puedo programa predeterminado predeterminadas por pasar para otro navegador link las enlaces desde cuales como celular cambiar archivos app aplicaciones abrir android android-intent intentfilter url-interception

son - Interceptar enlaces del navegador para abrir mi aplicación de Android



cuales son las aplicaciones predeterminadas de android (3)

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 determinado en lugar de permitir que el navegador la 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 recién acuñada.

Por ejemplo, haga clic en un enlace de YouTube desde cualquier lugar del teléfono y se le dará la oportunidad de abrir la aplicación de YouTube.

¿Cómo logro esto para mi propia aplicación?



Use un android.intent.action.VIEW de la categoría android.intent.category.BROWSABLE .

Desde AndroidManifest.xml la aplicación Photostream 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 que está dentro de la activity , necesita buscar la acción y luego hacer algo con la URL que le entregaron. El método Intent.getData() te 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 se está quedando un poco desactualizada (1.2), por lo que puede encontrar que hay mejores formas de lograr esto.


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; } }