【问题标题】:How to enable cookies in android webview?如何在 android webview 中启用 cookie?
【发布时间】:2013-06-18 07:41:09
【问题描述】:

如何在 web 视图中启用 cookie?

我尝试使用

CookieManager.getInstance().setAcceptCookie(true);

就在调用 WebView.loadUrl() 之前,它不起作用,因为我从网站收到一个 HTML 页面错误,说需要启用 cookie。

cookieManager 如何知道启用 cookie 的 webview?

假设我有一个屏幕上有两个 webview 的活动,而我只希望其中一个 webview 启用 cookie,那么使用 CookieManager 怎么可能?

我觉得我错过了什么。我找不到像 webView.setCookieManager 或 Cookiemanager.setWebView(webview) 这样的方法。

【问题讨论】:

  • 设置 CookieManager.getInstance().setAcceptCookie(true); 没用,因为 setAcceptCookie() 默认为 true:developer.android.com/reference/android/webkit/… 在您的情况下,Cookie 可能由于未启用 CookieManager#setAcceptThirdPartyCookiesCookieManager#setAcceptFileSchemeCookies 而无法正常工作

标签: android webview


【解决方案1】:

CookieManager.getInstance() 是整个应用程序的 CookieManager 实例。 因此,您可以为应用程序中的所有 webviews 启用或禁用 cookie。

通常,如果您的 webview 已经初始化,它应该可以工作: http://developer.android.com/reference/android/webkit/CookieManager.html#getInstance()

也许你在初始化你的webview之前调用CookieManager.getInstance().setAcceptCookie(true);,这就是问题所在?

【讨论】:

  • 我的问题是 webview 没有发送已经存在于商店中的 cookie。你如何让 webview 发送 cookie?我在 CookieManager.getInstance().setAcceptCookie(true); 之后初始化 webview 我错过了什么吗?
  • 还要检查 API >21 的这个答案(棒棒糖后):stackoverflow.com/a/47868677/3101777
  • 设置CookieManager.getInstance().setAcceptCookie(true);没有用,因为setAcceptCookie()默认为真:developer.android.com/reference/android/webkit/…
【解决方案2】:

你应该考虑一下

CookieManager.getInstance().setAcceptCookie(true);

不适用于棒棒糖(API21)及更高版本。您应该针对这种情况检查并使用适当的功能:

if (android.os.Build.VERSION.SDK_INT >= 21) {   
     CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, true);
} else {
     CookieManager.getInstance().setAcceptCookie(true);
}

【讨论】:

  • 出于好奇,WebView 是否默认接受 cookie?我想他们会的,对吧?
  • 您在哪里看到 setAcceptCookie 在 >= 21 时不起作用?未列出developer.android.com/reference/android/webkit/…
  • 答案错误。您不能使用 if/else。无条件使用 CookieManager.getInstance().setAcceptCookie(true); 启用 cookie 并使用 if (android.os.Build.VERSION.SDK_INT >= 21) { CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, true); } 启用第 3 方 cookie。但是第一部分根本不需要,因为 setAcceptCookie() 默认为真:developer.android.com/reference/android/webkit/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
相关资源
最近更新 更多