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
相关产品推荐
相关产品推荐

