在30中,当尝试设置webview cookie时不起作用。
字符串cookieString = string.Format("{0}={1};path=/;domain={2};secure;",Strings.SessionCookie,encryptedCookie,"value");
if (Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
CookieManager.Instance.SetAcceptThirdPartyCookies(webView, true);
}
else
{
CookieManager.Instance.SetAcceptCookie(true); //this function doesn't work from lollipop(API21) and above
}
CookieManager.Instance.SetCookie(RootCookieDomain, cookieString);
webView.Settings.JavaScriptEnabled = true;
webView.Settings.DomStorageEnabled = true;
webView.LoadUrl(Link);
上面的代码在SDK 29中工作得很好,但一旦切换到30,它就停止工作,cookie也没有被设置。
发布于 2022-02-25 06:48:20
我用下面的代码设置cookie。它在API30上工作。
Xaml:
<WebView x:Name="MyWebview" WidthRequest="400" HeightRequest="500"></WebView>
<Button Text="click to load" Clicked="Button_Clicked"></Button>
代码:
private void Button_Clicked(object sender, EventArgs e)
{
CookieContainer cookieContainer = new CookieContainer();
Uri uri = new Uri("https://dotnet.microsoft.com/apps/xamarin", UriKind.RelativeOrAbsolute);
Cookie cookie = new Cookie
{
Name = "XamarinCookie",
Expires = DateTime.Now.AddDays(1),
Value = "My cookie",
Domain = uri.Host,
Path = "/"
};
cookieContainer.Add(uri, cookie);
MyWebview.Cookies = cookieContainer;
MyWebview.Source = new UrlWebViewSource { Url = uri.ToString() };
}
https://stackoverflow.com/questions/71246015
复制相似问题