Android (9) Pieですべてのネットワーク接続タイプのHTTPとHTTPSを許可するには?

現在のAndroid 9 Pieからは、暗号化されていないリクエストは決して機能しません。また、デフォルトでは、システムはTLSを使用することを期待しています。この特集はこちらで読めますだから、HTTPSを介してのみリクエストを行うのであれば安全です。しかし、異なるサイトを経由してリクエストを行うアプリ、例えばブラウザのようなアプリの場合はどうでしょう。

Android 9 PieでHTTPとHTTPSのすべての種類の接続へのリクエストを有効にするにはどうすればいいですか?

ソリューション

これを実装する簡単な方法は、この属性を AndroidManifest.xml で使用し、すべての http をすべてのリクエストに対して許可することです。

android:usesCleartextTraffic="true"

しかし、例えば、あるドメインにはhttpを許可するが、他のドメインには許可しないなど、異なるリンクに対してさらに設定したい場合には、networkSecurityConfigファイルを用意する必要があります。

Android 9 Pieでこれを行うには、Manifestのapplicationタグ内に以下のようにnetworkSecurityConfigを設定する必要があります。

<?xml version="1.0" encoding="utf-8"?>




次に、xmlフォルダ内に、マニフェストで設定したのと同じように、network_security_configという名前のファイルを作成し、ファイルの内容を以下のようにすることで、暗号化なしですべてのリクエストを有効にすることができます。

<?xml version="1.0" encoding="utf-8"?>






以上で設定は完了です。これで、アプリはすべてのタイプの接続に対してリクエストを行うようになります。このトピックの詳細については、こちらをご覧くださいを参照してください。

解説 (9)

この問題に直面しているAndroidまたはReact-nativeユーザーの両方にとって、完全に機能する解決策は、以下を追加するだけです。 android:usesCleartextTraffic="true" をAndroidManifest.xmlファイルに追加してください。

android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">

AndroidManifest.xmlファイルの{{533832}}のように、``の間にタグの間に {{533823}} を挿入します。




解説 (2)

React Nativeアプリケーションをデバッグで実行する場合は、@Xenolion氏が言及した「xmlブロック」を、/android/app/src/debug/res/xmlにあるreact_native_config.xmlに追加してください。

以下のスニペットと同様です。

<?xml version="1.0" encoding="utf-8"?>


        localhost
        10.0.2.2
        10.0.3.2






解説 (0)