android - Deshabilitar la vinculación automática de Webview
linkify (3)
Tengo una vista web que estoy creando. Parece que automáticamente se vinculan números en tel: urls. No vi una forma de eliminar esta capacidad (al menos, nada similar a la forma de habilitarlo en una vista de texto).
El código es bastante simple:
// populate the web view
WebView webView = (WebView) findViewById(R.id.app_info_webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);
webView.setBackgroundColor(0);
String url = APP_INFO_BODY_HTML + "?versionName=" + versionName;
webView.loadUrl(url);
Tengo un aviso de derechos de autor en la parte inferior de la página, android está cambiando el 2011 en un enlace que se puede hacer clic y abre el marcador. Además, la aplicación versión 1.0.0 se abre en el marcador.
¿Hay alguna manera de desactivar esta funcionalidad?
Actualización: Acabo de descubrir que esto parece depender del dispositivo ... ocurre en el Droid X, pero no en un Samsung Captivate, no en el Nexus S, y no en el emulador.
Me sorprende ver que está lanzando Dialer al seleccionar un número de su propio WebView.
A menos que anule WebViewClient :: shouldOverrideUrlLoading () y detecte que el esquema de la url tiene "tel" e inicie la actividad del Marcador, nunca lanzará un Marcador desde su WebView. ¿Estás seguro de que no estás manejando el esquema tel: en shouldOverrideUrlLoading ()?
Hay una manera de hacerlo, bastante feo, con dos capas, pero sigue siendo una solución.
Debieras
- modificar cómo manejará la vista web los elementos auto-linkificables
explique explícitamente a la página cargada que no aplique estilos y comentarios hápticos.
mWebView.setWebViewClient( new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, final String url) { Uri uri = Uri.parse(url); //TODO analyse the uri here //and exclude phone and email from triggering any action return false; } public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {} public void onPageFinished (WebView view, String url) {...} public void onPageStarted(WebView view, String url, Bitmap favicon) {...} public void onLoadResource(WebView view, String url) {...} });
En el html, especifique las siguientes metaetiquetas dentro de la etiqueta:
<meta name="format-detection" content="telephone=no" /> <meta name="format-detection" content="email=no" />
Espero que esto ayude.
Puede encontrar el código que realiza la detección real en external
/ webkit
/ WebKit
/ android
/ nav
/ CacheBuilder.cpp
: FindPartialNumber()
y así sucesivamente.
Puede desactivarlo o cambiar la lógica como lo desee.