¿Cómo permitir todos los tipos de conexión de red HTTP y HTTPS en Android (9) Pie?

Resuelto Xenolion asked hace 54 años • 11 respuestas

A partir de Android 9 Pie, las solicitudes sin cifrado nunca funcionarán. Y de forma predeterminada, el sistema esperará que utilice TLS de forma predeterminada. Puede leer esta función aquí. Si solo realiza solicitudes a través de HTTPS, estará seguro. Pero ¿qué pasa con las aplicaciones que realizan solicitudes a través de diferentes sitios, por ejemplo, aplicaciones similares a navegadores?

¿Cómo puedo habilitar solicitudes a todo tipo de conexiones HTTP y HTTPS en Android 9 Pie?

Xenolion avatar Jan 01 '70 08:01 Xenolion
Aceptado

La manera fácil de implementar esto es usar este atributo AndroidManifest.xmldonde permite httptodas las solicitudes:

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

Pero en caso de que desee más configuraciones para diferentes enlaces, por ejemplo, permitiendo httpalgunos dominios pero no otros, debe proporcionar res/xml/networkSecurityConfig.xmlel archivo.

Para hacer esto en Android 9 Pie, tendrás que configurar una etiqueta networkSecurityConfigen tu Manifiesto applicationcomo esta:

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




    </application>
</manifest>

Luego, en su xmlcarpeta, ahora debe crear un archivo con el nombre network_security_configque le dio en el Manifiesto y desde allí el contenido de su archivo debe ser así para habilitar todas las solicitudes sin cifrado:

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

A partir de ahí estás listo para continuar. Ahora tu aplicación realizará solicitudes para todo tipo de conexiones. Para obtener información adicional sobre este tema, lea aquí .

Xenolion avatar Aug 17 '2018 20:08 Xenolion

La SOLUCIÓN TOTALMENTE FUNCIONAL para ambos Androido React-nativelos usuarios que enfrentan este problema simplemente agregue esto android:usesCleartextTraffic="true" en el archivo AndroidManifest.xml como este:

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

en el medio <application>... </application>etiqueta como esta:

<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>
HarshitMadhav avatar Apr 24 '2019 16:04 HarshitMadhav