Sketchware中WebView无法保存用户会话Cookie问题求助
补全Cookie持久化关键配置
你之前的代码缺少开启Cookie持久存储的设置,Android 11及以上系统默认不会自动将Cookie保存到本地,需要补上这段代码,且必须放在WebView加载URL之前执行:CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.setAcceptThirdPartyCookies(webview1, true); } // 开启Cookie持久化,这是核心步骤 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { cookieManager.setPersistentCookieStoreEnabled(true); }配置WebView基础参数适配PHPBB会话需求
PHPBB依赖JavaScript和DOM存储维持会话,需要打开这些开关:WebSettings webSettings = webview1.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); webSettings.setDatabaseEnabled(true);应用退出时强制同步Cookie到本地
在应用暂停或销毁时,手动将Cookie刷入本地存储,避免会话丢失,在Sketchware的自定义代码块中添加生命周期方法:@Override protected void onPause() { super.onPause(); CookieManager.getInstance().flush(); }检查PHPBB论坛的Cookie设置
若论坛自身设置的是会话级Cookie(关闭浏览器即失效),无论WebView怎么配置,重启应用都会丢失登录状态。可以用Chrome浏览器登录论坛,打开开发者工具查看Application -> Cookies,确认对应Cookie是否设置了持久化的过期时间。确保Sketchware中代码执行时机正确
所有配置代码必须在WebView加载URL前执行,比如在onCreate事件中,WebView实例创建完成后就插入代码,不要等网页加载完成后再设置。
内容的提问来源于stack exchange,提问作者sikmah 66
相关产品推荐
相关产品推荐

