设置Cookie Android

时间:2015-12-30 07:51:25

标签: javascript android cookies android-webview

我刚学会了如何在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()立即写入存储。

0 个答案:

没有答案