You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:56:01