项目中有部分功能需要WebView来显示内容,应用本身有登陆,在WebView中避免重复登陆。
具体实现如下:
1.在项目登陆的请求发送前,设置将cookie保存在本地。
PersistentCookieStore myCookieStore = new PersistentCookieStore(this);
myClient.setCookieStore(myCookieStore);
2.登陆成功后取出cookie,设置成WebView调用的网址需要的cookie的格式(可以通过在电脑上打开网址,再F12调试查看cookie的值,知道登陆需要的cookie的字段)。
我这边登陆只需要sessionId和domain
public void synCookies(Context context, String url) {
List<Cookie> cookies = myCookieStore.getCookies();
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
String cookieString = cookies.get(0).getName() + "=" + sessionId + "; domain=" + cookies.get(0).getDomain();
cookieManager.setCookie(url, cookieValue);
CookieSyncManager.getInstance().sync();
}
3.sessionId是cookie中的一个字段。