2011-03-29 42 views
6

我有一個webview,我正在創建。它似乎自動將數字鏈接到電話:網址。我沒有看到一種方法來消除這種能力(至少沒有類似於在textview上啓用它的方式)。禁用自動Linkview的Webview

的代碼非常簡單:

// 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上,但不是三星Captivate,而不是Nexus S,而不是仿真器。

+0

你提到使用textview也可以。這裏你可以找到關於如何添加鏈接到textview的鏈接http://android-developers.blogspot.com/2008/03/linkify-your-text.html – Fender 2011-03-29 12:37:05

回答

0

我很驚訝地看到它啓動撥號器從您自己的WebView中選擇一個號碼。

除非您重寫WebViewClient :: shouldOverrideUrlLoading()並檢測url方案具有「tel」並啓動Dialer活動,否則它將永遠不會從WebView啓動撥號程序。你確定你沒有在shouldOverrideUrlLoading()中處理tel:scheme嗎?

7

有一種方法可以做到這一點 - 相當難看,兩層結構,但仍然是一種解決方法。

你應該

  1. 修改的WebView將如何處理自動linkifiable項目
  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標籤,在標籤內:

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

希望這有助於。

+1

我認爲有第三種格式檢測類型:。電話 - 不停止自動電話:鏈接,電子郵件停止自動mailto:鏈接,地址停止地理:鏈接。我找不到任何關於電子郵件或地址的官方文檔。 http://developer.apple.com/library/safari/#documentation/appleapplications/reference/SafariHTMLRef/Articles/MetaTags.html只提及電話。 – 2012-03-22 19:50:48

-2

你可以發現,真正的做到了檢測external/webkit/WebKit/android/nav/CacheBuilder.cpp代碼:FindPartialNumber()等。

您可以禁用它或根據需要更改邏輯。