|
import android.os.Build; |
|
import android.webkit.CookieManager; |
|
import android.webkit.CookieSyncManager; |
|
import android.webkit.WebView; |
|
|
|
import java.util.ArrayList; |
|
|
|
public class CookieTool { |
|
public static String filterCookie(String url) { |
|
CookieManager manager = CookieManager.getInstance(); |
|
String cookie = manager.getCookie(url); |
|
|
|
String[] cookies = cookie.split(";"); |
|
ArrayList<String> cookieKeyList = new ArrayList<>(); |
|
StringBuilder cookieSb = new StringBuilder(); |
|
for (int i = 0 ; i < cookies.length ; i++) { |
|
String[] temp = cookies[i].split("="); |
|
String key = temp[0].trim(); |
|
if (cookieKeyList.contains(key) || temp.length < 2) { |
|
continue; |
|
} |
|
cookieKeyList.add(key); |
|
cookieSb.append(cookies[i]).append(";"); |
|
} |
|
|
|
return cookieSb.substring(0, cookieSb.length() - 1); |
|
} |
|
|
|
public static void restoreCookie(String cookie, WebView webview, String url) { |
|
CookieManager manager = CookieManager.getInstance(); |
|
|
|
webview.clearCache(true); |
|
webview.clearHistory(); |
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { |
|
manager.removeAllCookies(null); |
|
manager.flush(); |
|
} else { |
|
CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(webview.getContext()); |
|
cookieSyncMngr.startSync(); |
|
manager.removeAllCookie(); |
|
manager.removeSessionCookie(); |
|
cookieSyncMngr.stopSync(); |
|
cookieSyncMngr.sync(); |
|
} |
|
|
|
manager.setAcceptCookie(true); |
|
String[] cookies = cookie.split(";"); |
|
for (int i = 0 ; i < cookies.length ; i++) { |
|
manager.setCookie(url, cookies[i].trim()); |
|
} |
|
} |
|
} |