Chrome 72 にアップデートした Android の WebView.loadData で # 以降の文字が表示されない
現象
Android の WebView.loadData で HTML を表示させる処理で、突然 HTML が途中までしか表示されない現象が発生しました。
詳しく調べたところ #(半角のシャープ)以降が全く表示されていないことがわかりました。
この現象が出る端末は、 2019/1/29 にリリースされた Android 版の Chrome の 72 にアップデートしている端末で、Android のバージョンは 6 以降であればすべて再現しました。
10年前の不具合に類似
この現象は 2008~2009年頃の初期の Android の WebView で発生していた # や % の文字があるとそれ以降が表示されないというバグに似ていて、今回は % は影響ないものの # については同様です。
Chrome 72 は多数の不具合があるようで安定していない状態でリリースされたようです。
対処法
10年前のバグと現象と同じ対処方法で解決しました。
以下は Xamarin (C#) のコードです。WebView.LoadData の代わりに WebView.LoadDataWithBaseURL を使います。
content が表示する HTML、はダミーの URL です。空文字とかでも良さそうです。
1 2 3 |
//webView.LoadData(content, "text/html;charset=utf-8", "UTF-8"); ↓ webView.LoadDataWithBaseURL(baseURL, content, "text/html;charset=utf-8", "UTF-8", null); |
これで Chrome 72 がインストールされた端末での不具合が解消されました。
参考
ITエンジニア募集中!
キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。
下記よりITエンジニア募集の採用情報をご覧いただけます。