MAUI中WebView的mailto/tel链接无法跳转问题求助
MAUI WebView中tel/mailto链接无响应的解决方法
一、修复AndroidManifest.xml的拼写错误
你配置里把电话协议tel误写成了tell,这是核心错误之一,同时建议拆分冲突的intent-filter规则:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true" android:usesCleartextTraffic="true"> <activity android:exported="true" android:name=".activity.MainActivity" > <!-- 处理VIEW协议(tel/mailto) --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <data android:scheme="mailto"/> <data android:scheme="tel"/> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> <!-- 单独处理SEND动作,避免规则冲突 --> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> </manifest>
二、在WebView的Navigating事件中手动拦截处理链接
MAUI WebView默认不会自动处理非HTTP/HTTPS协议的链接,需要手动拦截并调用系统应用打开:
private async void MyWebView_Navigating(object sender, WebNavigatingEventArgs e) { var url = e.Url; // 匹配tel或mailto协议 if (url.StartsWith("tel:", StringComparison.OrdinalIgnoreCase) || url.StartsWith("mailto:", StringComparison.OrdinalIgnoreCase)) { // 取消WebView默认导航行为 e.Cancel = true; // 调用系统对应应用打开链接 if (await Launcher.CanOpenAsync(new Uri(url))) { await Launcher.OpenAsync(new Uri(url)); } } }
三、确认WebView事件绑定
确保XAML中WebView已正确绑定Navigating事件:
<WebView x:Name="MyWebView" Navigating="MyWebView_Navigating" />
内容的提问来源于stack exchange,提问作者Amadeu Antunes
相关产品推荐
相关产品推荐

