タイトル通り、Android の WebView にて、画像URLで指定された画像が表示できない時の対処法です。
私が普段使っている端末が Android 7.0 で、この環境では問題なかったのですが、Android 9.0 で発生しました。
で、Chrome のデバックモードで確認したところ、「Failed to load resource: net::ERR_CLEARTEXT_NOT_PERMITTED」というエラーが発生していました。
検索したところ、下記の記事がヒットしました。
Android – [Android] WebViewでサーバー上のhtmlを読み込めない|teratail
https://teratail.com/questions/94253
こちらによると、画像URLが https://
ではなく、セキュアではない http://
から読み込まれようとしているため、WebView がブロックしていることが原因のようです。
確認したところ、読み込もうとしている画像 URL は確かに URL は http://
ですね…。
で、対応策としては、AndroidManifest.xml の application タグに、下記を追加するとのこと。
<application ... android:usesCleartextTraffic="true"> ... </application>
上記の android:usesCleartextTraffic="true"
を AndroidManifest.xml に設定することでも全ての通信に対して、暗号化されていない、HTTP 通信を許可することができます。
上記を追加して実行したところ、無事に画像が表示されました!
しかし、何故か PC にAndroid 端末を繋いで直接インストールする方法の時は画像が表示されるという謎な動きをしたので、DeployGate を挟んでインストールを行いました。
この現象については要注意ですね!
以上、Android の WebView で、画像URLで指定された画像が表示されない時の対処法でした。
…本当は、画像 URL もセキュアな通信で取得するようにするのが一番良いんですけどね…。
でも、すぐには難しいと思うので、この方法でしのぎましょう。