LoginSignup
5

More than 5 years have passed since last update.

AndroidアプリのWebViewでCookieが取得できない問題の解決方法

Posted at

AndroidアプリのWebViewでcookieを取得できない問題が発生した時の対応ログが残っていたのでここに上げておきます。
結論から言うと、Android 5.0からサードパーティのCookieが弾かれていたのが原因でした。

混合コンテンツとサードパーティの Cookie がデフォルトでブロックされます。混合コンテンツとサードパーティの Cookie を許可するには、それぞれ setMixedContentMode() メソッドと setAcceptThirdPartyCookies() メソッドを使用します。

具体的にはsetAcceptThirdPartyCookies()メソッドを使ってサードパーティのCookieを許可していないのが原因でした。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    cookieManager.setAcceptThirdPartyCookies(binding.webView, true);
}

Lollipop(Android 5.0)より下のバージョンをサポートしている場合は、上記のように分岐をしてあげないとクラッシュします。

デバッグ方法

単純にログを吐くだけです。

String[] cookies = cookieManager.getCookie(url).split(";");
for(String cookie : cookies) {
    Log.d("onPageStarted", cookie);
}

Chromeを使ってWebViewをみる

以下の記事の方法でNetworkやConsoleを見れたことが解決に繋がりました。

WebView のリモート デバッグ
https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews?hl=ja

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5