Android 9 で WebViewから ERR_CLEARTEXT_NOT_PERMITTED が出てきたので、解決した

f:id:MasayaStripes:20191208163919p:plain

こんにちは。マっさんです。

今回は、開発途中でAndroid 8以前では出てこなかった、WebView上での”ERR_CLEARTEXT_NOT_PERMITTED”のエラーの解決策を記事にします。

解決方法

まずは解決方法です。"AndroidManifest.xml" ファイル の タグ内に以下を記載してください。

<application
        android:usesCleartextTraffic="true">
 ・・・
</application>

原因

Android 9 から 機密性の高いトラフィックを実現するため、デフォルトで、
cleartextTrafficPermitted="false"
になりました。その為、こちらで明示的に追記する必要が出てきました。

developer.android.com

懸念点

この解決方法の場合、暗号化されていない、HTTP通信を許可することにもなってしまいます。
もし必要なドメインからのみの、セキュアな通信を受け付ける様にしたい場合は、
"res/xml/network_security_config.xml"
を作成し、以下のソースコードを追記してください。

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="false">
            <domain includeSubdomains="true">secure.example.com(接続させたいドメイン名)</domain>
        </domain-config>
    </network-security-config>

以上です。