Как сохранить Cookies в WebView?

Рейтинг: 1Ответов: 1Опубликовано: 06.02.2023

Нужно, чтобы логин и пароль сохранялись при выходе из приложения, как это реализовать?

Ответы

▲ 1Принят

Для работы с cookies в Android есть класс CookieManager.

Чтобы принимать cookies от сайтов, есть переключатель (по-умолчанию он уже включен):

CookieManager.getInstance().setAcceptCookie(true)

Если вам нужно включить third-party cookies, то есть следующий метод:

CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)

В случае принудительной остановки приложения может возникнуть ситуация, что cookies не успели синхронизироваться на диск из оперативной памяти.

Поэтому, чтобы гарантированно сохранить cookies на диск, используйте метод flush():

CookieManager.getInstance().flush()

Выполнение метода flush() можно добавить в ваш WebViewClient, чтобы сохранение cookies происходило после каждой загрузки страницы:

class MyWebViewClient : WebViewClient() {
    override fun onPageFinished(view: WebView, url: String) {
        CookieManager.getInstance().flush()
    }
}

Не забудьте подключить ваш WebViewClient к WebView:

val webView = WebView(context)
webView.webViewClient = MyWebViewClient()