我刚学会了如何在Android中使用webview。现在我试图存储一个假的cookie'对于在webview中打开的html页面。我观察到有些奇怪的行为,有时候我的/ data / data / package / app_webview中有Cookies.db
,有时候cookie没有设置而且它不存在。
什么是app_webview文件夹,它究竟存储了什么?现在我看到里面有一个 Cache 文件夹,里面有几个文件,他们的名字告诉我他们已加密或者最不被开发人员打扰。所以,我忽略了他们。除此之外,我有时会在app_webview文件夹中看到 Cookies.db 和 Web Data.db 。
我设置cookie的代码是:
mWebView.loadUrl("http://10.0.2.2/cookieDemo.html");
cookieDemo.html的内容是(如果它是相关的):
<html>
<head>
</script>
</head>
<body>
<form name="loginform">
<input type="text" name="emppassNTL" />
<button name="button" onclick="btnLogin.performClick(this.value);" style="height:30px;width:100px">Set Cookie</button>
</form>
</body>
</html>
我的目的是设置一个cookie,每次点击html页面中的按钮。点击按钮时执行的代码是:
mWebView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void performClick(String str1) {
Toast.makeText(mWebView.getContext(), "Set Cookie button click", Toast.LENGTH_SHORT).show();
// Need to add cookie to webview here.
CookieManager manager = CookieManager.getInstance();
manager.setAcceptCookie(true);
manager.setCookie(URL, "testCookie");
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
cookieSyncManager.sync();
}
}, "btnLogin");
虽然不推荐使用CookieSyncManager中的 sync 方法,但我尝试进行强制同步。但有时 Cookies.db 仍然可见,有时则不可见。这可能是我所做的一个非常基本的错误,但请原谅我,因为我对这些东西真的很陌生。
更新:我阅读了更多关于CookieSyncManager的内容,发现内存中存在cookie以便进行此过程。这听起来是 Cookies.db 不可见的一个可能原因。只有在我杀死应用程序并重新加载页面时才会刷新到持久存储。这可能是正确的行为,但我仍然希望 sync()立即写入存储。