android webview linkify

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

  1. modificar cómo manejará la vista web los elementos auto-linkificables
  2. 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.