android - 在 Android 中退出应用程序后如何在 WebView 中保持会话?
问题描述
我目前是 Android 开发的新手,但我正在尝试创建一个简单的 Android 应用程序来打开我的网站并允许您在 WebView 中登录它。但是,我意识到当您退出应用程序并终止其进程并重新启动应用程序时,它会要求您重新登录,而不是保持登录状态。我不知道如何解决这个问题。我已经研究了 CookieManager 的实现,但是,我无法让它正常工作。你能帮我看看我做错了什么吗?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView)findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.acceptCookie();
String cookie = CookieManager.getInstance().getCookie("myWebsite");
myWebView.loadUrl("myWebsite");
myWebView.setWebViewClient(new WebViewClient());
}
解决方案
我遇到了同样的麻烦。
尝试这样设置WebviewSettings
:
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
并将 cookie 从内存数据库刷新到持久内存。
CookieManager.getInstance().flush()
刷新后,即使完全重新启动应用程序,cookie 也应该存在。
使用以下方式访问 Cookie:
CookieManager.getInstance().getCookie(yourUrlString)
推荐阅读
- php - php artisan migrate = 连接被拒绝 (mac/laravel/xampp)
- google-cloud-platform - BigQuery DWH 的重要概念
- apollo - 如何在 GraphQL 中跨其余数据源维护请求上下文
- html - 如何在 Ionic 4 中的 ion-item 上叠加文本
- java - Spring Boot Flyway 将数据库迁移应用到错误的数据库
- dataframe - Spark-scala更改数据框中列的数据类型
- c - C中指针和指针引用的不可区分测试
- swift - 在 willSet 观察者中计算后未更新结构中的属性
- r - Rcpp R 向量大小限制(不允许负长度向量)
- ios - 在 Swift 5 中的 UITableView 内单击时如何禁用 UITextView 区域突出显示?