Tôi đã có báo cáo từ người dùng Android 8 rằng ứng dụng của tôi (sử dụng nguồn cấp dữ liệu phụ) không hiển thị nội dung. Sau khi điều tra, tôi thấy có Ngoại lệ xảy ra trên 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)
(Tôi đã xóa tên gói, URL và các định danh có thể khác)
Trên Android 7 và thấp hơn mọi thứ đều hoạt động, tôi không đặt android:usesCleartextTraffic
trong Manifest (và đặt nó thành true
không có ích, dù sao đó cũng là giá trị mặc định), tôi cũng không sử dụng Thông tin bảo mật mạng. Nếu tôi gọi NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted()
, nó sẽ trả về false
Android 8, true
cho phiên bản cũ hơn, sử dụng cùng một tệp apk. Tôi đã cố gắng tìm một số đề cập về điều này trên thông tin Google về Android O, nhưng không thành công.
cleartextTrafficPermitted="true"