从Android 9 Pie开始,没有加密的请求将永远无法工作。默认情况下,系统将期望您默认使用TLS。你可以在这里阅读这个功能,所以如果你只通过HTTPS发出请求,你是安全的。但是那些通过不同网站发出请求的应用程序呢,比如类似浏览器的应用程序。

如何在Android 9派中启用对所有类型的HTTP和HTTPS连接的请求?


当前回答

一个简单的方法是设置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>

我希望这对你有所帮助。

其他回答

对于在调试中运行的React Native应用程序,将@Xenolion提到的xml块添加到位于<project>/android/app/src/debug/res/xml中的react_native_config.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>

简单的方法

添加usesCleartextTraffic到AndroidManifest.xml

<application
...
android:usesCleartextTraffic="true"
...>

指示应用程序是否打算使用明文网络流量,例如明文HTTP。API级别为27或更低的应用程序的默认值为“true”。API级别为28或更高的应用程序默认为“false”。

一个简单的方法是设置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>

我希望这对你有所帮助。

You may check if you are sending clearText through HTTP Fix : https://medium.com/@son.rommer/fix-cleartext-traffic-error-in-android-9-pie-2f4e9e2235e6 OR In the Case of Apache HTTP client deprecation (From Google ) : With Android 6.0, we removed support for the Apache HTTP client. Beginning with Android 9, that library is removed from the bootclasspath and is not available to apps by default. To continue using the Apache HTTP client, apps that target Android 9 and above can add the following to their AndroidManifest.xml:

源 https://developer.android.com/about/versions/pie/android-9.0-changes-28

只需在AndroidManifest.xml文件的应用程序标签中设置usesCleartextTraffic标志。 不需要为Android创建配置文件。

 <application
   android:usesCleartextTraffic="true"
   .
   .
   .>