Android 9 請求網絡報異常:Cleartext HTTP traffic not permitted


因為從Android9.0(API 28)開始,NetworkSecurityPolicy.getInstance().isCleartextTrafficPermitted(), 將return false。這表示Android默認將禁止明文訪問網絡,只允許使用https url訪問

為了避免強制啟用https,可以有以下幾種做法(任選其一即可):

  • AndroidManifest文件的application節點添加android:usesCleartextTraffic="true"

     <?xml version="1.0" encoding="utf-8"?>
     <manifest ...>
         <uses-permission android:name="android.permission.INTERNET" />
         <application
             ...
             android:usesCleartextTraffic="true"
             ...>
             ...
         </application>
     </manifest>
  • AndroidManifest文件的application節點添加android:networkSecurityConfig="@xml/network_security_config"

    <?xml version="1.0" encoding="utf-8"?>
     <manifest ...>
         <uses-permission android:name="android.permission.INTERNET" />
         <application
             ...
             android:networkSecurityConfig="@xml/network_security_config"
             ...>
             ...
         </application>
     </manifest> 

    還需要新建res/xml/network_security_config.xml 文件:

     <?xml version="1.0" encoding="utf-8"?>
     <network-security-config>
         <domain-config cleartextTrafficPermitted="true">
             <domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
         </domain-config>
     </network-security-config>
  • 在AndroidManifest文件的manifest節點添加android:targetSandboxVersion="1":
     <?xml version="1.0" encoding="utf-8"?>
     <manifest android:targetSandboxVersion="1">
         <uses-permission android:name="android.permission.INTERNET" />
         ...
     </manifest>

以上三種做法均可以讓我們的應用繼續使用明文訪問網絡,不過既然Android強制要求啟用https,還是盡快遷移到https為妙。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM