我正在创建一个webview。它似乎自动将数字链接到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,而不是模拟器。
答案 0 :(得分:7)
有一种方法可以做到这一点 - 相当丑陋,两层,但仍然是一种解决方法。
你应该
明确告诉加载的页面不要应用样式和触觉反馈。
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" />
希望这有帮助。
答案 1 :(得分:0)
我很惊讶地看到它正在从您自己的WebView中选择一个号码时启动Dialer。
除非您覆盖WebViewClient :: shouldOverrideUrlLoading()并检测到url方案具有“tel”并启动Dialer活动,否则它将永远不会从WebView启动Dialer。你确定你没有在shouldOverrideUrlLoading()中处理tel:scheme吗?
答案 2 :(得分:-2)
您可以在external
/ webkit
/ WebKit
/ android
/ nav
/ CacheBuilder.cpp
中找到进行真实检测的代码: FindPartialNumber()
等等。
您可以根据需要禁用它或更改逻辑。