Android 在xamarin forms iOS中单击webview时如何在设备浏览器中打开链接

Android 在xamarin forms iOS中单击webview时如何在设备浏览器中打开链接,android,ios,xamarin.forms,cross-platform,hybrid-mobile-app,Android,Ios,Xamarin.forms,Cross Platform,Hybrid Mobile App,我正在开发一个xamarin forms交叉绘图应用程序, 我正在使用webview将一个外部html页面加载到其中,现在我们在该html页面中有了一个锚定标记,在这里,当用户在iOS和Android上单击该链接时,如何在设备浏览器中打开该链接,我在iOS的AppDelegate.cs文件中编写了以下代码块,但它不起作用 private bool HandleShouldStartLoad(UIWebView webview,NSUrlRequest request,UIWebViewNavi

我正在开发一个xamarin forms交叉绘图应用程序, 我正在使用webview将一个外部html页面加载到其中,现在我们在该html页面中有了一个锚定标记,在这里,当用户在iOS和Android上单击该链接时,如何在设备浏览器中打开该链接,我在iOS的AppDelegate.cs文件中编写了以下代码块,但它不起作用

 private bool HandleShouldStartLoad(UIWebView webview,NSUrlRequest request,UIWebViewNavigationType navtype)
    {
        if(navtype==UIWebViewNavigationType.LinkClicked)
        {
            UIApplication.SharedApplication.OpenUrl(request.Url);
            return false;
        }  
        return true;
    }
请帮助如何实现它


提前感谢

使用
Device.OpenUri
并传递您的URL

Device.OpenUri(new Uri(request.Url));
UIApplication.SharedApplication.OpenUrl(new NSUrl(request.Url));
您可以使用
UIApplication.SharedApplication.OpenUrl
,但您应该创建一个新的
NSUrl
对象,传入您的URL

Device.OpenUri(new Uri(request.Url));
UIApplication.SharedApplication.OpenUrl(new NSUrl(request.Url));

使用
Device.OpenUri
并传递您的URL

Device.OpenUri(new Uri(request.Url));
UIApplication.SharedApplication.OpenUrl(new NSUrl(request.Url));
您可以使用
UIApplication.SharedApplication.OpenUrl
,但您应该创建一个新的
NSUrl
对象,传入您的URL

Device.OpenUri(new Uri(request.Url));
UIApplication.SharedApplication.OpenUrl(new NSUrl(request.Url));

我认为您可以尝试使用
WebViewRenderer
来实现这一点。在表单中创建类似于
MyWebView
的WebView,并在每个平台上实现渲染器

在iOS上: 在Android上:
[程序集:ExportRenderer(typeof(MyWebView)、typeof(MyWebViewRenderer))]
名称空间OpenUriDemo.Droid
{
公共类MyWebViewRenderer:WebViewRenderer
{
公共MyWebViewRenderer(上下文):基础(上下文)
{
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.SetWebViewClient(新的MyWebViewClient());
}
}
公共类MyWebViewClient:WebViewClient
{
公共覆盖bool ShouldOverrideUrlLoading(Android.Webkit.WebView视图,字符串url)
{
如果(url!=“您的第一个请求url”)
{
意图i=新意图(Intent.ActionView);
i、 SetData(Android.Net.Uri.Parse(url));
Xamarin.形式.形式.上下文.起始触觉(i);
返回false;
}
返回true;
}
}
}

使用
MyWebView
将url加载到表单中。

我认为您可以尝试使用
webview呈现程序来实现这一点。在表单中创建类似于
MyWebView
的WebView,并在每个平台上实现渲染器

在iOS上: 在Android上:
[程序集:ExportRenderer(typeof(MyWebView)、typeof(MyWebViewRenderer))]
名称空间OpenUriDemo.Droid
{
公共类MyWebViewRenderer:WebViewRenderer
{
公共MyWebViewRenderer(上下文):基础(上下文)
{
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.SetWebViewClient(新的MyWebViewClient());
}
}
公共类MyWebViewClient:WebViewClient
{
公共覆盖bool ShouldOverrideUrlLoading(Android.Webkit.WebView视图,字符串url)
{
如果(url!=“您的第一个请求url”)
{
意图i=新意图(Intent.ActionView);
i、 SetData(Android.Net.Uri.Parse(url));
Xamarin.形式.形式.上下文.起始触觉(i);
返回false;
}
返回true;
}
}
}

使用
MyWebView
在表单中加载您的url。

您只需使用
Device.OpenUri()
我正在加载带有外部Html页面的webview,我们在Html页面中有锚定标记,当我们点击锚定时,我需要在浏览器中而不是在应用程序中打开它?是的,这是可能的。我正在像Loadfromweb一样加载我的webview。Source=new UrlWebViewSource{Url=myurl};你能解释一下我需要如何更改这里的replace
UIApplication.SharedApplication.OpenUrl(request.Url)Device.OpenUri(新的Uri(request.Url))你可以使用
Device.OpenUri()
我正在加载带有外部Html页面的webview,我们在该Html页面中有锚定标记,这里当我们单击锚定时,我需要在浏览器中而不是在应用程序中打开它?是的,这是可能的。我正在像Loadfromweb一样加载我的webview。Source=new UrlWebViewSource{Url=myurl};你能解释一下我需要如何更改这里的replace
UIApplication.SharedApplication.OpenUrl(request.Url)Device.OpenUri(新的Uri(request.Url))感谢Balaraju的回复,我正在加载类似mywebview的webview。source=new-UrlWebViewSource{Url=myurl};我正在将该myurl的锚定标记添加到我的webview中,我可以使用您的代码块来添加UIApplication.SharedApplication.OpenUrl(新的NSUrl(request.Url));这在可移植类库或iOS项目中?感谢Balaraju的回复,我正在加载类似mywebview的webview。source=new UrlWebViewSource{Url=myurl};我正在将该myurl的锚定标记添加到我的webview中,我可以使用您的代码块来添加UIApplication.SharedApplication.OpenUrl(新的NSUrl(request.Url));这在可移植类库中还是在iOS项目中?