6

我有一个正在创建的 web 视图。它似乎自动将数字链接到 tel: urls。我没有看到删除此功能的方法(至少没有类似于在 textview 上启用它的方法)。

代码非常简单:

// 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 上,也不是在模拟器上。

4

3 回答 3

7

有一种方法可以做到这一点 - 相当丑陋,两层,但仍然是一种解决方法。

你应该

  1. 修改 webview 将如何处理可自动链接的项目
  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" />
    

希望这可以帮助。

于 2011-08-03T05:21:58.677 回答
0

我很惊讶地看到它正在启动 Dialer 从您自己的 WebView 中选择一个号码。

除非您覆盖 WebViewClient::shouldOverrideUrlLoading() 并检测到 url 方案具有“tel”并启动拨号器活动,否则它将永远不会从您的 WebView 启动拨号器。您确定您没有在 shouldOverrideUrlLoading() 中处理 tel: 方案吗?

于 2011-03-29T13:24:28.650 回答
-2

external您可以在/ webkit/ WebKit/ android/ nav/中找到进行真正检测的代码CacheBuilder.cppFindPartialNumber()等等。

您可以根据需要禁用它或更改逻辑。

于 2011-08-17T02:59:44.160 回答