繁体   English   中英

为什么我无法点击Android WebView中的电话号码?

[英]Why am I unable to click on a phone number in Android WebView?

我正在学习本教程。 我正在为我的一个域制作一个Android应用程序,它是一个非常基本的查看器,显示主页,用户可以导航到应用程序内的其他页面(而不是弹出窗口,要求他们使用巫婆浏览器)但是,我也有网站上的电话号码作为链接,例如在这个.tel页面中,你可以将鼠标悬停在上面,看到calto:xxxxx,当我在浏览器中点击手机时,它会根据我的意愿给我拨号。 当我在我的webview应用程序上点击它时,它也会通过调出拨号应用程序来工作。

但是,在实现以下代码以打开应用程序内的所有页面和链接后,它不起作用。 它在应用程序内部给我一条消息,因为我无法打开它

 // Force links and redirects to open in the WebView instead of in a browser mWebView.setWebViewClient(new WebViewClient()); 

所以我用这个来制作其他请求的域名(我希望电话号码也是如此)在另一个应用程序,浏览器中打开(期待拨号应用程序),它适用于其他网站但是当我点击电话号码时它只给我这个错误并强制关闭应用程序

 public class MyAppWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if(Uri.parse(url).getHost().endsWith("html5rocks.com")) { return false; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(intent); return true; } } 

错误

 02-24 18:56:20.065 15423-15423/com.clicnet.bandeirantestel A/chromium﹕ [FATAL:jni_android.cc(271)] Check failed: false. 02-24 18:56:20.075 15423-15423/com.clicnet.bandeirantestel A/libc﹕ Fatal signal 6 (SIGABRT), code -6 in tid 15423 (bandeirantestel) 
我尝试在棒棒糖和ics上运行它,但结果是一样的

任何帮助表示感谢

我用这个解决了它

 public boolean shouldOverrideUrlLoading(WebView view, String url) {Uri query_string=Uri.parse(url); String query_scheme=query_string.getScheme(); String query_host=query_string.getHost(); if ((query_scheme.equalsIgnoreCase("https") || query_scheme.equalsIgnoreCase("http")) && query_host!=null // && query_host.equalsIgnoreCase(Uri.parse(URL_SERVER).getHost()) && query_string.getQueryParameter("new_window")==null ) {return false;//handle the load by webview } try {Intent intent=new Intent(Intent.ACTION_VIEW, query_string); String[] body=url.split("\\\\?body="); if (query_scheme.equalsIgnoreCase("sms") && body.length>1) {intent=new Intent(Intent.ACTION_VIEW, Uri.parse(body[0])); intent.putExtra("sms_body", URLDecoder.decode(body[1])); } view.getContext().startActivity(intent);//handle the load by os } catch (Exception e) {} return true; } 

这是第一个解决方案的一个编辑的版本在这里 (我打开这个问题之前,曾经尝试),并通知我如何注释掉的部分地方将排除我的主页,这样它会打开在WebView中的所有页面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM