Des utilisateurs d'Android 8 m'ont signalé que mon application (qui utilise le flux principal) n'affiche pas de contenu. Après enquête, j'ai constaté que l'exception suivante se produisait sur Android 8:
08-29 12:03:11.246 11285-11285/ E/: [12:03:11.245, main]: Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted
at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:115)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:458)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.doConnection(AbstractHttpAsyncTask.java:207)
at com.deiw.android.generic.tasks.AbstractHttpAsyncTask.extendedDoInBackground(AbstractHttpAsyncTask.java:102)
at com.deiw.android.generic.tasks.AbstractAsyncTask.doInBackground(AbstractAsyncTask.java:88)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
(J'ai supprimé le nom du package, l'URL et d'autres identifiants possibles)
Sur Android 7 et inférieur, tout fonctionne, je ne définis pas android:usesCleartextTrafficdans le manifeste (et le définir sur truen'aide pas, c'est la valeur par défaut de toute façon), je n'utilise pas non plus les informations de sécurité réseau. Si j'appelle NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(), il revient falsepour Android 8, truepour une version plus ancienne, en utilisant le même fichier apk. J'ai essayé d'en trouver une mention sur Google info sur Android O, mais sans succès.





cleartextTrafficPermitted="true"