MAUI Android webview 代理

问题描述 投票:0回答:1

如何使用 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 webview maui
1个回答
0
投票

您可以尝试使用适用于 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
方法中。

© www.soinside.com 2019 - 2024. All rights reserved.