android中okhttp與webview的cookie共享

轉載請註明出處:https://blog.csdn.net/u011038298/article/details/84551136

 

1.同步內嵌頁cookie

    /**
     * 注意事項:
     * 1.如果需要傳第三方cookie,請調用方法setAcceptThirdPartyCookies
     * 2.如果這裏有多個cookie,不要使用分號手動拼接,請多次調用setCookie方法
     * 3.請在WebView的setting方法完成之後,並且在loadUrl方法之前執行
     * 4.請區分5.0之前和5.0之後的api調用
     * https://developer.android.com/reference/android/webkit/CookieManager
     * @param context
     * @param url
     */
    private void syncCookie(Context context, String url) {
        try {
            // 在上下文中創建單個CookieSyncManager
            CookieSyncManager.createInstance(context);
            // 獲取單例CookieManager實例
            CookieManager cookieManager = CookieManager.getInstance();
            // 設置應用程序的WebView實例是否應發送和接受cookie
            cookieManager.setAcceptCookie(true);
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
                // 刪除所有會話cookie
                cookieManager.removeSessionCookie();
                // 刪除所有cookie
                cookieManager.removeAllCookie();
            } else {
                // 設置是否WebView應允許設置第三方cookie
                cookieManager.setAcceptThirdPartyCookies(webView, true);
                // 刪除所有會話cookie
                cookieManager.removeSessionCookies(null);
                // 刪除所有cookie
                cookieManager.removeAllCookies(null);
            }

            String cookie = "這裏的cookie從客戶端緩存裏面取,webView與okHttp的cookie緩存共享";
            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
                // 設置原生cookie
                cookieManager.setCookie(url, cookie);
                // 設置第三方cookie
                cookieManager.setCookie(url, String.format("這裏填寫cookie的名稱=%s", "這裏填寫cookie的值"));
                // 確保當前可通過getCookie API訪問的所有cookie都寫入持久存儲
                CookieSyncManager.getInstance().sync();
            } else {
                // 設置原生cookie
                cookieManager.setCookie(url, cookie, null);
                // 設置第三方cookie
                cookieManager.setCookie(url, String.format("這裏填寫cookie的名稱=%s", "這裏填寫cookie的值"), null);
                // 確保當前可通過getCookie API訪問的所有cookie都寫入持久存儲
                cookieManager.flush();
            }
        } catch (Exception e) {
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章