場景:應用的登入界面是用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();
}
}
}