gpt4 book ai didi

android - Cookie 未保存在 Xamarin(Android)的 Web View 中

转载 作者:太空狗 更新时间:2023-10-29 13:12:23 25 4
gpt4 key购买 nike

我正在用 xamarin 创建一个 android 应用程序。我正在使用 WebView 来显示网站。用户登录网站后创建一个 cookie 并应存储在 web View 中。应用程序中有两个网页 View ,一个网页 View 显示页面,如果页面中有任何文本框,则在第二个网页 View 中打开该页面。

因此,现在当用户尝试登录时,会打开第二个 Web View (因为登录页面包含文本框),在用户输入详细信息并单击下一步按钮后,第二个 View 会关闭,并在第一个 Web View 中打开下一页。登录后,将创建一个 cookie 并将其存储在 WebView 中,当用户下次打开该应用程序时,它不会要求登录。这是应该发生的事情。

问题是,如果用户输入详细信息并单击下一步按钮(下一页在第一个 Web View 中加载)并立即退出应用程序然后再次启动应用程序,则 cookie 不存在并且应用程序再次要求登录。

登录后,我在 webview 的页面完成事件中读取 cookie 值并在 toast 中显示。如果我在登录后退出应用程序,我会在 toast 中获取 cookie 值,但是当我再次启动应用程序时,cookie 不再存在,它会要求我再次登录

public override void OnPageFinished (WebView view, string url)
{
try
{
if (view.Url == Urls.URL_INDEX)
{
var cookieManager = CookieManager.Instance;
if (cookieManager != null)
{
//getcookie string from the url
string cookie = cookieManager.GetCookie (view.Url);
if (!string.IsNullOrEmpty (cookie))
{
string[] cookies = cookie.Split (';');
foreach (var newcookie in cookies)
{
if (newcookie.Trim().StartsWith (Constants.COOKIE_NAME))
{
string cookieValue = newcookie.Substring (newcookie.IndexOf ('='));
Toast.MakeText(activity,cookieValue,ToastLength.Short).Show();
}
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine ("Exception in storing cookie in Home Activity : "+ex.Message);
Toast.MakeText (activity, "Exception : " + ex.Message,ToastLength.Long).Show();
}
}

我不知道为什么会这样,请帮忙。

最佳答案

cookie 存储在 RAM 中以获得最佳性能,并每五分钟同步一次到永久存储。您需要手动强制 CookieSyncManager 同步您的 OnPageFinished 方法中的 cookie,以便在您再次启动应用程序时它们仍然可用。引用CookieSyncManager documentation了解更多详情。

关于android - Cookie 未保存在 Xamarin(Android)的 Web View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com