¿Cómo permitir todos los tipos de conexión de red HTTP y HTTPS en Android (9) Pie?
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?
La manera fácil de implementar esto es usar este atributo AndroidManifest.xml
donde permite http
todas las solicitudes:
<application android:usesCleartextTraffic="true">
</application>
Pero en caso de que desee más configuraciones para diferentes enlaces, por ejemplo, permitiendo http
algunos dominios pero no otros, debe proporcionar res/xml/networkSecurityConfig.xml
el archivo.
Para hacer esto en Android 9 Pie, tendrás que configurar una etiqueta networkSecurityConfig
en tu Manifiesto application
como esta:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>
Luego, en su xml
carpeta, ahora debe crear un archivo con el nombre network_security_config
que 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í .
La SOLUCIÓN TOTALMENTE FUNCIONAL para ambos Android
o React-native
los 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>