webview要支持cookie需要开启cookie。还有5.0版本之后的cookie变动。
cookie打开:在webview初始化之前需要开启cookie。执行这些代码。
CookieManager cookieManager = CookieManager.getInstance(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.setAcceptThirdPartyCookies(webView,true); } else { cookieManager.setAcceptCookie(true); }
cookieManager.getInstance().sync();
CookieManager.setAcceptFileSchemeCookies(true);
截取cookie,是在webviewclient中截取的。
cookie截取:cookie获取后可以存储到本地等,自己对cookie的操作。
webView.getSettings().setAllowFileAccess(true); webView.getSettings().setAllowFileAccessFromFileURLs(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setSupportZoom(true);
webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //对cookie的操作。 Log.i("COOKIE", url + "---" + CookieManager.getInstance().getCookie(url) + "---" + CookieManager.getInstance().acceptCookie()); view.loadUrl(url); return true; } });
还可以主动设置cookie和获取cookie以及清空cookie:
cookieManager.setCookie("chengzhu","cookie");
String chengzhu = cookieManager.getCookie("chengzhu");
cookieManager.removeAllCookie();
为什么要提cookie的截取和主动设置和获取呢?这是因为在webview中有时候会出现cookie的丢失的问题。这个cookie丢失问题并不是在所有手机上出现,只会在某些手机上出现在。
地址:https://github.com/xiaoyunchengzhu/AndroidAndH5