Xamarin WebView中<tel:>链接点击问题求助
Xamarin WebView 中tel:链接点击问题解决方案
Android 平台处理方式
- 自定义
WebViewClient,重写ShouldOverrideUrlLoading方法,识别tel:开头的链接并唤起拨号应用:
public class CustomWebViewClient : WebViewClient { public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) { var url = request.Url.ToString(); if (url.StartsWith("tel:")) { var intent = new Intent(Intent.ActionDial, Android.Net.Uri.Parse(url)); view.Context.StartActivity(intent); return true; } return base.ShouldOverrideUrlLoading(view, request); } }
- 给WebView绑定这个自定义Client:
webView.SetWebViewClient(new CustomWebViewClient());
iOS 平台处理方式
- 自定义
WKNavigationDelegate,在DecidePolicy方法中拦截tel:链接并触发拨号:
public class CustomNavigationDelegate : WKNavigationDelegate { public override void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler) { var url = navigationAction.Request.Url; if (url.Scheme.Equals("tel", StringComparison.OrdinalIgnoreCase)) { UIApplication.SharedApplication.OpenUrl(url); decisionHandler(WKNavigationActionPolicy.Cancel); return; } decisionHandler(WKNavigationActionPolicy.Allow); } }
- 将代理绑定到WebView:
webView.NavigationDelegate = new CustomNavigationDelegate();
通用检查项
- 确认WebView已开启JavaScript支持(若网页依赖JS处理链接跳转):
// Android webView.Settings.JavaScriptEnabled = true; // iOS var config = new WKWebViewConfiguration(); var webView = new WKWebView(View.Frame, config);
- 验证网页内
<tel:>链接格式是否标准,比如是否为<a href="tel:13800138000">拨打电话</a>这类规范写法。
内容的提问来源于stack exchange,提问作者dape svk
相关产品推荐
相关产品推荐

