web-dev-qa-db-ja.com

Android(9)Pieですべてのネットワーク接続タイプHTTPおよびHTTPSを許可する方法

Android 9 Pieから、暗号化なしのリクエストは機能しなくなります。そしてデフォルトでは、システムはデフォルトでTLSを使用することを期待します。 この機能はここで読むことができます 。しかし、ブラウザのようなアプリなど、異なるサイトを介してリクエストを行うアプリについてはどうでしょう。

Android 9 Pieですべてのタイプの接続HTTPおよびHTTPSへの要求を有効にするにはどうすればよいですか?

76
Xenolion

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

Android:usesCleartextTraffic="true"

ただし、たとえば、さまざまなリンクに対していくつかのより多くの構成が必要な場合、一部のドメインではhttpを許可し、他のドメインでは許可しないnetworkSecurityConfigファイル。

Android 9 Pieでこれを行うには、次のようにマニフェストnetworkSecurityConfigタグにapplicationを設定する必要があります。

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application Android:networkSecurityConfig="@xml/network_security_config">




    </application>
</manifest>

次に、xmlフォルダーで、マニフェストで名前を付けたのと同じようにnetwork_security_configという名前のファイルを作成する必要があります。ファイルのコンテンツは、暗号化:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

そこから行くことができます。これで、アプリはすべてのタイプの接続に対してリクエストを行います。このトピックの詳細については、 こちらをご覧ください

130
Xenolion

完全に機能するソリューションこの問題に直面しているAndroidまたはReact-nativeの両方のユーザーは、このAndroid:usesCleartextTraffic="true"をAndroidManifest.xmlファイルに次のように追加するだけです。

Android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<uses-library
    Android:name="org.Apache.http.legacy"
    Android:required="false" />

次のような<application> .. </application>タグの間に:

<application
      Android:name=".MainApplication"
      Android:label="@string/app_name"
      Android:icon="@mipmap/ic_launcher"
      Android:allowBackup="false"
      Android:theme="@style/AppTheme"
        Android:usesCleartextTraffic="true"
        tools:ignore="GoogleAppIndexingWarning">
        <uses-library
            Android:name="org.Apache.http.legacy"
            Android:required="false" />
      <activity
        Android:name=".MainActivity"
        Android:label="@string/app_name"/>
 </application>
17
Harshit Agrawal

簡単な方法は、Android:usesCleartextTraffic="true"AndroidManifest.xmlに設定することです

Android:usesCleartextTraffic="true"

あなたのAndroidManifest.xmlは次のようになります

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.dww.drmanar">
   <application
       Android:icon="@mipmap/ic_launcher"
       Android:label="@string/app_name"
       Android:usesCleartextTraffic="true"
       Android:theme="@style/AppTheme"
       tools:targetApi="m">
       <activity
            Android:name=".activity.SplashActivity"
            Android:theme="@style/FullscreenTheme">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
       </activity>
    </application>
</manifest>

これがお役に立てば幸いです。

7
Mehul Solanki

AndroidManifest.xmlファイルのアプリケーションタグにusesCleartextTrafficフラグを設定するだけです。 Android用の構成ファイルを作成する必要はありません。

 <application
   Android:usesCleartextTraffic="true"
   .
   .
   .>
5
Asif Patel

デバッグで実行中のReact Nativeアプリケーションの場合、@ Xenolionが言及したxml blockreact_native_config.xmlにある<project>/Android/app/src/debug/res/xmlに追加します

次のスニペットに似ています:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="false">localhost</domain>
        <domain includeSubdomains="false">10.0.2.2</domain>
        <domain includeSubdomains="false">10.0.3.2</domain>
    </domain-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

HTTP Fixを使用してclearTextを送信しているかどうかを確認できます: https://medium.com/@son.rommer/fix-cleartext-traffic-error-in-Android-9-pie-2f4e9e2235e6
または
Apache HTTPクライアントの非推奨の場合(Googleから):Android 6.0では、Apache HTTPクライアントのサポートが削除されました。 Android 9以降、そのライブラリはbootclasspathから削除され、デフォルトではアプリで使用できません。 Apache HTTPクライアントを引き続き使用するために、Android 9以降を対象とするアプリは、AndroidManifest.xmlに次を追加できます。

ソース https://developer.Android.com/about/versions/pie/Android-9.0-changes-28

0
user11091094