Recibí informes de usuarios con Android 8 de que mi aplicación (que usa alimentación de fondo) no muestra contenido. Después de la investigación, encontré la siguiente excepción en 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)
(He eliminado el nombre del paquete, la URL y otros identificadores posibles)
En Android 7 y versiones anteriores, todo funciona, no configuro android:usesCleartextTraffic
en Manifiesto (y configurarlo true
no ayuda, ese es el valor predeterminado de todos modos), ni uso la información de seguridad de red. Si llamo NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted()
, regresa false
para Android 8, true
para versiones anteriores, usando el mismo archivo apk. Traté de encontrar alguna mención de esto en la información de Google sobre Android O, pero sin éxito.
cleartextTrafficPermitted="true"