【问题标题】:Setting Cookies Enabled in Android WebView在 Android WebView 中设置启用 Cookie
【发布时间】:2014-11-26 07:26:08
【问题描述】:

我正在尝试设置为 Android webview 启用的 cookie,但它对我不起作用 这是我尝试过的

CookieManager cookieManager = CookieManager.getInstance(); 
CookieSyncManager.createInstance(this);

webView = (WebView) findViewById(R.id.webView);
cookieManager.setAcceptCookie(true); 
cookieManager.acceptCookie();
CookieSyncManager.getInstance().startSync();
WebSettings settings = webView.getSettings();  
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);  
settings.setDefaultZoom(ZoomDensity.FAR);
settings.setJavaScriptEnabled(true);
settings.setBuiltInZoomControls(true); 
settings.setRenderPriority(RenderPriority.HIGH);
settings.setAppCacheEnabled(true);
settings.setAllowFileAccess(true);
settings.setAllowContentAccess(true);
settings.setDomStorageEnabled(true);

这里是 JS

function getCookie(cname) {

    var name = cname + "=";
    var ca = document.cookie.split(';');
    alert(ca);
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
    }
    return "";
}

更新

这是我设置 cookie 的方式

function setCookie(cname, cvalue) {

    var domain = document.domain;
    var currentURL = document.URL;
        if (currentURL.substr(0, 4) == 'file') {
    alert("in offline cookie set");
     document.cookie = cname + "=" + cvalue + "; path=/;" + " domain=file://";
      }
      else{
     document.cookie = cname + "=" + cvalue + "; path=/;" + " domain=" + domain;
      }
}

【问题讨论】:

  • 从哪里设置 cookie?每个使用 WebView 的应用都会获得一个不同的、最初为空的 cookie jar。
  • @ksasq :我只是在 JS 中设置 cookie,就像在在线浏览器中一样。请参阅有问题的更新

标签: android cookies webview android-webview


【解决方案1】:

我明白了,您正在尝试设置 file:// cookie。请在创建 WebView 或访问 CookieManager 之前尝试此方法:http://developer.android.com/reference/android/webkit/CookieManager.html#setAcceptFileSchemeCookies(boolean)

请阅读此方法的文档!

【讨论】:

  • 啊啊啊终于...谢谢老兄,工作就像一个魅力:)
【解决方案2】:

尝试设置:

CookieManager.getInstance().setAcceptCookie(true);

【讨论】:

  • 您是否需要将 cookie 从浏览器应用程序 (chrome) 同步到 webView,或者 cookie 仅在 webView 中不起作用。你有没有试过把CookieManager.getInstance().setAcceptCookie(true);放在webView = (WebView) findViewById(R.id.webView);下面
  • 是的,我试过了。我只需要在 webview 中。不涉及其他应用
【解决方案3】:

您必须调用CookieManager.getInstance().setAcceptCookie(true);您初始化您的网络视图。我想这是你的问题!

【讨论】:

    【解决方案4】:

    我没有任何文档可参考,但出于某些(可能是安全)原因,无法通过 webView 从本地文件 URL 方案(例如:file://...)获取 Cookie。

    所以我认为唯一的解决方案是构建一个本地 HttpServer(例如:NanoHttpd)并为本地文件添加一个虚拟主机。

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      相关资源
      最近更新 更多