如何使用 android (MAUI) 的 webview 连接代理?
对于 Windows,这很简单,因为您可以使用 CoreWebView2EnvironmentOptions 类,不幸的是对于 andorid 没有这种可能性。 有人可以帮我设置代理吗?
在我使用的 Windows 版本上:
CoreWebView2EnvironmentOptions Options = new CoreWebView2EnvironmentOptions();
Options.AdditionalBrowserArguments = "--proxy-server=host:port";
CoreWebView2Environment env =
await CoreWebView2Environment.CreateAsync(null, null, Options);
webView.EnsureCoreWebView2Async(env);
但是ANDROID中不存在选项
我需要设置主机:端口代理
您可以尝试使用适用于 Android 的
Xamarin.AndroidX.WebKit
nuget 包。另外,对于windows来说,没有CoreWebView2Environment.CreateAsync(null, null, Options);
方法。完整代码:
#if WINDOWS
var webview2 = webview.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2;
Microsoft.Web.WebView2.Core.CoreWebView2EnvironmentOptions Options = new Microsoft.Web.WebView2.Core.CoreWebView2EnvironmentOptions();
Options.AdditionalBrowserArguments = "--proxy-server";
Microsoft.Web.WebView2.Core.CoreWebView2Environment env = await Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateWithOptionsAsync(null, null, Options);
await webview2.EnsureCoreWebView2Async(env);
webview.Source = "the url";
#elif ANDROID
if (AndroidX.WebKit.WebViewFeature.IsFeatureSupported(AndroidX.WebKit.WebViewFeature.ProxyOverride))
{
var proxyurl = "host:port";
var proxyconfig = new AndroidX.WebKit.ProxyConfig.Builder().AddProxyRule(proxyurl).AddDirect().Build();
AndroidX.WebKit.ProxyController.Instance.SetProxyOverride(proxyconfig, new MyExcuter(), new MyRunable());
}
webview.Source = "the url";
#endif
并且在xaml中,有
<WebView x:Name="webview" .../>
。您可以将上面的代码放在Page的 override OnHandlerChanged
方法中。