如何在android webview中启用cookie?

jon*_*ney 28 android webview

如何在网页浏览中启用Cookie?

我试着用

CookieManager.getInstance().setAcceptCookie(true);
Run Code Online (Sandbox Code Playgroud)

就在调用WebView.loadUrl()之前它并没有工作,因为我从网站上得到一个html页面错误,说需要启用cookie.

我不明白的是,cookieManager如何知道启用cookie的webview?

如果我在屏幕上有两个webview的活动,我只想要其中一个webview启用cookie,那怎么可能使用CookieManager?

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

谢谢

Int*_*uff 31

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

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

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

  • 干杯.在loadUrl之后执行代码后立即工作 (2认同)
  • 设置 `CookieManager.getInstance().setAcceptCookie(true);` 是没有用的,因为 setAcceptCookie() 默认为 true:https://developer.android.com/reference/android/webkit/CookieManager#setAcceptCookie(boolean) (2认同)

Mis*_*pov 25

你应该考虑这一点

CookieManager.getInstance().setAcceptCookie(true);
Run Code Online (Sandbox Code Playgroud)

不适用于棒棒糖(API21)及以上版本.您应检查并使用适用于该情况的函数:

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

  • 出于好奇,`WebView`默认接受cookie吗?我想他们会吧? (2认同)
  • 答案是错误的。您不能使用 if/else。无条件使用`CookieManager.getInstance().setAcceptCookie(true);`启用cookie并使用`if (android.os.Build.VERSION.SDK_INT >= 21) { CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, true) ; }` 也启用第 3 方 cookie。但是,根本不需要第一部分,因为 setAcceptCookie() 默认情况下为 true:https://developer.android.com/reference/android/webkit/CookieManager#setAcceptCookie(boolean) (2认同)