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

Xamarin Forms WebView处理tel链接:导航取消失败及平台异常求助

解决Xamarin Forms WebView处理tel链接的问题

核心错误:事件参数类型误用

你当前绑定的是WebNavigated事件(参数为WebNavigatedEventArgs),这个事件是导航完成后触发的,没有提供取消导航的Cancel属性。正确的做法是使用Navigating事件,对应的参数为WebNavigatingEventArgs,它包含Cancel属性,能在导航开始前阻止WebView加载tel链接。

修正后的完整代码

public async void WebViewNavigating(object sender, WebNavigatingEventArgs args)
{
    if (args.Url.StartsWith("tel:"))
    {
        args.Cancel = true; // 取消WebView的默认导航行为
        await Xamarin.Essentials.Launcher.OpenAsync(args.Url);
    }
}

问题修复说明

  • iOS端500错误:原代码在导航完成后才处理tel链接,此时WebView已经尝试加载不符合网页标准的tel协议,引发内部错误。在Navigating阶段取消导航,WebView不会执行无效加载,自然消除该错误。
  • Android端“未找到”错误:未取消导航时,WebView会持续尝试加载tel链接,通话结束返回应用后,WebView会显示加载失败的“未找到”页面。取消导航后,WebView会保留当前页面状态,不会触发这次无效加载。

内容的提问来源于stack exchange,提问作者Entretoize

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:40:34