天天看點

在WebView加載頁面時添加cookies

場景:應用的登入界面是用android原生寫的,登入成功後儲存cookies到本地,然後需要用webview去加載某個頁面,此時需要給webview添加本地儲存的cookies,以避免二次登入.

我們可以在使用mWebView.loadUrl(url)之前給url添加上cookies,這樣就可以避免重複登入問題了。

代碼如下:

import java.util.List;
import org.apache.http.client.CookieStore;
import org.apache.http.cookie.Cookie;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import com.lcoa.application.BaseApplication;
/**
 * 存儲伺服器傳回的cookies
 * 
 * @author zh
 * 
 */
public class MyCookieStore {
	private static CookieSyncManager cookieSyncManager;
	public static CookieStore cookieStore = null;
	public static String JSESSIONID = null;
	public static String result = null;
    //在mWebView.loadUrl(url); 之前給url添加上cookies
	public static void setCookiesToURL(String url) {
		try {
			List<Cookie> cookies1 = MyCookieStore.cookieStore.getCookies();
			if (cookies1 != null && !cookies1.isEmpty()) {
				if (null == cookieSyncManager) {
					cookieSyncManager = CookieSyncManager.createInstance(BaseApplication.getApplication());
				}
				CookieManager cookieManager1 = CookieManager.getInstance();
				cookieManager1.setAcceptCookie(true);
				cookieManager1.removeSessionCookie();// 移除
				for (Cookie cookie1 : cookies1) {
					Cookie sessionInfo = cookie1;
					String cookieString = sessionInfo.getName() + "=" + JSESSIONID + ";";
					cookieSyncManager.startSync();
					new Thread().sleep(500);// 重新整理 webview.db,不然不會得到實時效果
					cookieManager1.setCookie(url, cookieString);
				}
				
				String cook = cookieManager1.getCookie(url);
				System.out.println("getCookie:  -----------" + cook);
				
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}