繁体   English   中英

我使用的是 WebView,当在 href 中单击 mailto: 或 tel: dont redirect to nothing in Maui

[英]I'm using a WebView and when click in href with mailto: or tel: dont redirect to nothing in Maui

我已经以这种方式设置了 AndoidManifest.xml,但仍然无法正常工作。 带有 mailto: 或 tel: 的 hrfs 在 Maui 上不要重定向到任何内容 就像什么都没有被点击

例如,如果 WebView 中的页面包含

 <a href="tel:+6494461709">61709</a>

当单击某些 href 时,除了 mailto 或 tel,它会以这种方式捕获

 private async void MyWebView_Navigating(object sender, WebNavigatingEventArgs e)
{
    var link = e.Url.ToUpper();
}
   

AndoidManifest.xml

<?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" >
      <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <data  android:scheme="mailto"/>
        <data  android:scheme="tell"/>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE"/>

      </intent-filter>
    </activity>
  </application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
  
</manifest>

该问题可能是由于在 AndroidManifest.xml 中使用错误的“tel”方案引起的。 电话号码的正确格式是“tel”,而不是“tell”。 此外,您对 ToUpper() 方法使用了错误的外壳。

将AndroidManifest.xml中的代码修改为:

<data  android:scheme="tel"/>

并且,在 MyWebView_Navigating 方法中,使用 URL 的原始大小写:

var link = e.Url;

编辑:

private void MyWebView_Navigating(object sender, WebNavigatingEventArgs e)
{
    if (e.Url.StartsWith("tel:"))
    {
        var uri = new Uri(e.Url);
        var phoneNumber = uri.AbsoluteUri.Replace("tel:", "");
        Device.OpenUri(new Uri(String.Format("tel:{0}", phoneNumber)));
        e.Cancel = true;
    }
    else if (e.Url.StartsWith("mailto:"))
    {
        var uri = new Uri(e.Url);
        var mailTo = uri.AbsoluteUri.Replace("mailto:", "");
        Device.OpenUri(new Uri(String.Format("mailto:{0}", mailTo)));
        e.Cancel = true;
    }
}

// In your MainPage.xaml.cs
MyWebView.Navigating += MyWebView_Navigating;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM