从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>

我希望这对你有所帮助。

其他回答

完全工作的解决方案,无论是Android或react原生用户面对这个问题,只需添加这个 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>

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

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

这对我很有效,

将此XML文件添加到: andriod / app / src / main / res / xml / network_security_config.xml

network_security_config.xml

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

然后将此代码添加到AndroidMenifest.xml

<application
    ...
      android:usesCleartextTraffic="true"
      android:networkSecurityConfig="@xml/network_security_config"
    ...
      >
      <!-- for http support-->
      <uses-library android:name="org.apache.http.legacy" android:required="false"/>
      ...
</application>
        

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

我希望这对你有所帮助。

简单的方法

添加usesCleartextTraffic到AndroidManifest.xml

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

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