我在 WebView 中顯示一個 OAtuh2 HTML 頁面,在單擊此頁面上的驗證按鈕后,該頁面回傳一個重定向 URL,我想攔截該 URL 以使用其中的資訊。
在 XML 檔案中
<ContentPage.Content>
<WebView x:Name="browser"></WebView>
</ContentPage.Content>
在 CS 檔案中
browser.Source = "https://myUrl";
我對 Xamarin 的了解不足,無法讓我知道該怎么做
謝謝你的幫助
uj5u.com熱心網友回復:
您可以像 ToolmakerSteve 提到的那樣使用WebNavigatingEventArgs.
有關詳細資訊,您可以使用自定義渲染器在每個特定平臺上實作此功能。
IOS
[assembly: ExportRenderer(typeof(WebView), typeof(MyRenderer))]
namespace FormsApp.iOS
{
class MyRenderer : WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
this.NavigationDelegate = new MyDelegate();
}
}
public class MyDelegate : WKNavigationDelegate
{
public override void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler)
{
if(navigationAction.NavigationType == WKNavigationType.Other)
{
if(navigationAction.Request.Url != null)
{
//do something
}
decisionHandler(WKNavigationActionPolicy.Cancel);
return;
}
decisionHandler(WKNavigationActionPolicy.Allow);
}
}
}
安卓
[assembly: ExportRenderer(typeof(Xamarin.Forms.WebView), typeof(MyRenderer))]
namespace FormsApp.Droid
{
class MyRenderer : WebViewRenderer
{
public MyRenderer(Context context):base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.SetWebViewClient(new MyClient());
}
}
}
public class MyClient : WebViewClient
{
public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request)
{
//do something
return true;
}
}
}
參考
https://stackoverflow.com/a/45604360/8187800
https://stackoverflow.com/a/4066497/8187800
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/351418.html
標籤:C# 沙马林 xamarin.forms
上一篇:我在設定<tbody>標簽的innerHTML時遇到了這個問題。使用document.getElementById選擇它后,它向我顯示了錯誤
