블로그

[안드로이드] 웹뷰의 쿠키값 동기화

안드로이드 웹뷰에서 접속한 페이지에서 로그인 또는 쿠키를 저장시 앱을 종료하고 다시 실행시

쿠키가 삭제되는 경우가 발생합니다. 이런 경우 아래와 같이 앱과 웹뷰 사이의 쿠키값 싱크를 해 주어야 합니다.

액티비티에 아래와 같이 추가합니다.

@Override
protected void onCreate(Bundle savedInstanceState) {

    .....

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        CookieSyncManager.createInstance(this);
    }
}

@Override
protected void onResume() {
    super.onResume();

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        CookieSyncManager.getInstance().startSync();
    }
}

@Override
protected void onPause() {
    super.onPause();

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
        CookieSyncManager.getInstance().stopSync();
    }
}

웹뷰를 생성할 때 아래와 같이 onPageFinished 이벤트에서 쿠키값을 싱크합니다.

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            CookieSyncManager.getInstance().sync();
        } else {
            CookieManager.getInstance().flush();
        }
    }
}

위와 같이 처리하면 앱을 종료하고 난 후에도 쿠키값이 저장이 되어 있어서 앱을 재실행시 쿠키를

다시 사용가능합니다.

2017-06-16 목록