Android P聯網報錯 :Cleartext HTTP traffic to xxx not permitted的解決辦法

項目在Android 9.0的手機上報錯java.io.IOException: Cleartext HTTP traffic to xxx not permitted
詳細信息如下:

java.io.IOException: Cleartext HTTP traffic to android.bugly.qq.com 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.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
        at com.tencent.bugly.proguard.ai.a(BUGLY:266)
        at com.tencent.bugly.proguard.ai.a(BUGLY:115)
        at com.tencent.bugly.proguard.al.run(BUGLY:355)
        at com.tencent.bugly.proguard.ak$2.run(BUGLY:757)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
        at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:784)
原因分析

Google針對 Android 系統(Android P) 的應用程序,將要求默認使用加密連接(TLS),目的是爲了保證用戶數據和設備的安全,因此在Android P系統中使用HttpUrlConnection進行http請求會出現上述問題。

解決辦法
方法1:

app.gradle中將targetSdkVersion降到28以下

方法2:

將http請求改爲https請求,這種方案顯然不太現實,一般項目的測試環境都是http請求。

方法3(推薦):

修改AndroidManifest.xml文件

1: 在res的xml文件中添加network_security_config.xml
在這裏插入圖片描述2:文件內容在network-security-config標籤中配置如下:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:android="http://schemas.android.com/apk/res/android">
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

3:在AndroidManifest.xml文件的applicaiton標籤中配置networkSecurityConfig引用xml文件
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章