Отключить автоматический Linkify of Webview - PullRequest
6 голосов
/ 29 марта 2011

У меня есть веб-просмотр, который я создаю.Кажется, он автоматически связывает числа в тел: URL.Я не видел способа удалить эту способность (по крайней мере, ничего похожего на способ включить его в текстовом представлении).

Код довольно прост:

// 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);

У меня естьУведомление об авторском праве внизу страницы, android превращает 2011 год в кликабельную ссылку, которая открывает номеронабиратель.Кроме того, в номеронабирателе открывается версия приложения 1.0.0.

Есть ли способ отключить эту функцию?

Обновление: я только что обнаружил, что это зависит от устройства ... происходит наDroid X, но не Samsung Captivate, не на Nexus S и не эмулятор.

Ответы [ 3 ]

7 голосов
/ 03 августа 2011

Есть способ сделать это - довольно уродливый, двухслойный, но все же обходной путь.

Вы должны

  1. изменить, как веб-просмотр будет обрабатывать автоматически связываемые элементы
  2. явно указывает загруженной странице не применять стили и тактильные отзывы.

    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) {...}
    }); 
    

    В html укажите следующие метатеги внутри тега:

    <meta name="format-detection" content="telephone=no" />
    <meta name="format-detection" content="email=no" />
    

Надеюсь, это поможет.

0 голосов
/ 17 августа 2011

Вы можете найти код, который выполняет реальное обнаружение в external / webkit / WebKit / android / nav / CacheBuilder.cpp: FindPartialNumber() и т. Д.

Вы можете отключить его или изменить логику по своему усмотрению.

0 голосов
/ 29 марта 2011

Я удивлен, увидев, что он запускает Dialer при выборе номера из вашего собственного WebView.

Если вы не переопределите WebViewClient :: shouldOverrideUrlLoading () и обнаружите, что в схеме URL-адресов есть "tel", и запустите действие Dialer, оно никогда не запустит Dialer из вашего WebView.Вы уверены, что не обрабатываете tel: схему в shouldOverrideUrlLoading ()?

...