Это просто быстрый пост о добавлении файлов cookie в веб-просмотр. Если вы когда-либо пытались сделать это так, как большинство людей говорили, что это должно быть сделано, вы с треском провалились и нашли этот пост. :)
Способ, которым он должен работать, заключается в том, что вы устанавливаете cookie в CookieManager, а затем указываете CookieSyncManager для синхронизации.
CookieManager.getInstance().setCookie(domain, value);
CookieSyncManager.getInstance().sync();
Я никогда не заставлял это работать так, как описано. С или без асинхронных задач, ожидающих догонения потоков.
Вместо этого я просто добавляю cookie в заголовок всех вызовов loadUrl.
Map<String, String> headers = new HashMap<String, String>();
headers.put("Cookie", "cookieName=cookieValue;domain=domain.com;path=/;Expires=Thu, 2 Aug 2021 20:47:11 UTC;");
webView.loadUrl("myurl.com", headers );
Предупреждение: мне нужно только сначала загрузить соответствующий файл cookie для запроса, если вы хотите покрыть вложенные вызовы изнутри браузера, вам нужно переопределить shouldOverrideUrlLoading.
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url, headers);
return false;
}
});
Если вам нужно вставить cookie для всех запросов (включая изображения, js и т. Д.), Вам нужно будет переопределить mustInterceptRequest,