Android : comment éviter l'erreur net::ERR_CLEARTEXT_NOT_PERMITTED dans la WebView ?

Android a connu de nombreuses évolutions au cours de sa vie. Cela a également été le cas pour le développement des applications fonctionnant sur le système. De nombreuses modifications ont eu lieu, avec l'ajout de nouvelles fonctionnalités, la prise en charge de nouvelles technologies et des améliorations dans la sécurité. Le message "ERR_CLEARTEXT_NOT_PERMITTED" est justement une erreur liée à la sécurité. Lorsque vous utilisez une WebView ou une autre classe pour accéder à des données d'un autre site, on doit obligatoirement utiliser la norme "HTTPS". Il existe des solutions pour gérer ce souci, même pour des sites ou des API ne gérant pas cette norme.

La première chose à vérifier est de regarder si votre site peut utiliser la norme HTTPS. Si c'est le cas, alors il peut y avoir un problème dans l'écriture de votre URL. Par exemple, la mention "www." est obligatoire pour que l'URL soit complète. Par exemple, "https://monsite.fr/" ne fonctionnera pas et vous aurez le message d'erreur. Vous devez écrire l'URL "https://www.monsite.fr/".

Si votre URL ne supporte pas le protocole "HTTPS", il existe quand même une option pour activer la gestion des URL non sécurisées. L'option la plus sécurisée est d'activer, dans les paramètres, de la sécurité. Ajoutez la ligne suivante dans le fichier de configuration de l'application.

android:networkSecurityConfig="@xml/network_security_config"

Vous devez ensuite ouvrir le fichier "network_security_config.xml". Dans ce fichier, ajoutez la balise "domaine-config" avec l'option "clearTextPermitted" à "true". Vous pouvez écrire dans cette balise la liste des domaines pour lesquels la navigation sans le protocole sécurisé est autorisée.


    
         monsite.fr
    

Il est sinon possible de faire plus simple en désactivant la sécurité pour toute l'application. Cette mesure est plus simple à mettre en œuvre mais rend votre application plus vulnérable. Dans le fichier de configuration de votre application, ajoutez simplement l'attribut "android:usesCleartextTraffic" avec la valeur "true" dans la balise de l'application, pour vous permettre d'utiliser une URL en http avec une WebvView.

    

Android