31
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android WebViewのCookieの扱いで激ハマりした話

Last updated at Posted at 2016-10-17

概要

WebViewでCookieを使おうと思った時、4系以降のOSに対応させようと思って発生した出来事です。
初回だけCookieが反映されず、WebViewの表示が正常ではなかった。

原因

WebViewのCookieってどこで登録してますか?
やっぱりWebViewClientのonPageStartedですか?
私も、onPageStartedです。

・・・原因はこれでした。

解決策

これは、5.0以降だとダメっぽいです。
4系だと正常に動いてくれます。

4系では、WebViewを生成してから、onPageStartedでCookieを登録していくことになると思います。
しかし、5.0以降では、onPageStartedでは、Cookieの登録が間に合わないようです。
5.0以降になると、WebViewを生成する前に、Cookieを登録しても怒られないようになっています。

例えば、MainActivityのOnCreateで書いたりします。

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            CookieManager cm = CookieManager.getInstance();
            cm.setAcceptCookie(true);
            cm.setCookie(BuildConfig.URL_API_BASE, COOKIE_VALUE);
        }

これ、きちんとバージョンで分岐してあげないと、エラーも吐かずにアプリが落ちます。
最初落ちてるところを特定するのに苦労しました・・・。

こうしてWebViewを作る前にCookieを登録してあげることで、正常に動作するようになりました。

4x系では、以前と同様onPageStartedで設定してあげる必要があります。
対応OS5.0以降でいいよっていう素敵な環境ならonPageStartedに記述する必要はありません。

もっとスマートにならないのかね、これ・・・。

以上、WebViewのCookieの扱いで激ハマりしたことでした。

31
31
2

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
31
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?