4 回答

TA貢獻1772條經驗 獲得超5個贊
如果您的 URL 以開頭,http
那么您必須在 Android Pie 中使用它,即 API 級別 28
android:usesCleartextTraffic="true"
在應用程序標記內的清單中作為屬性

TA貢獻1862條經驗 獲得超6個贊
這可能是因為您正在使用http
. 從 Android O 開始,需要使用https
instead ofhttp
否則會報錯Cleartext HTTP traffic to * not permitted
。因此,您需要創建一個配置以允許這樣做。您可以參考選擇退出明文流量
文件詳情:
注意:本節中的指南僅適用于面向 Android 8.1(API 級別 27)或更低版本的應用。從 Android 9(API 級別 28)開始,明文支持默認禁用。
打算僅使用安全連接連接到目標的應用程序可以選擇不支持到這些目標的明文(使用未加密的 HTTP 協議而不是 HTTPS)。此選項有助于防止由于后端服務器等外部源提供的 URL 更改而導致應用程序意外回歸。有關
NetworkSecurityPolicy.isCleartextTrafficPermitted()
更多詳細信息,請參閱。例如,應用程序可能希望確保所有連接
secure.example.com
始終通過 HTTPS 完成,以保護來自敵對網絡的敏感流量。
res/xml/network_security_config.xml
:<?xml version="1.0" encoding="utf-8"?><network-security-config> <domain-config cleartextTrafficPermitted="false"> <domain includeSubdomains="true">secure.example.com</domain> </domain-config></network-security-config>
.
你也可以android:usesCleartextTraffic="true"
在你AndroidManifest.xml
的開發模式下使用,但你不應該在發布模式下使用它。Android 開發者博客中有關它的更多詳細信息,這里是摘錄:
阻止生產中的明文流量
為了保護您的應用程序的安裝基礎免受明文流量的回歸,請在應用程序的 AndroidManifest.xml 中的應用程序元素上聲明 android:usesCleartextTraffic=”false” 屬性。這聲明了應用程序不應該使用明文網絡流量,并使 Android Marshmallow 的平臺網絡堆棧阻止應用程序中的明文流量。例如,如果您的應用不小心嘗試通過明文 HTTP 請求登錄用戶,該請求將被阻止,并且用戶的身份和密碼不會泄露到網絡。
您不必將應用的 minSdkVersion 或 targetSdkVersion 設置為 23 (Android Marshmallow) 即可使用 android:usesCleartextTraffic。在較舊的平臺上,此屬性會被忽略,因此無效。
請注意,WebView 尚不支持此功能。
在某些情況下,明文流量可能仍會離開或進入應用程序。例如,Socket API 忽略了明文策略,因為它不知道它傳輸或接收的數據是否可以歸類為明文。另一方面,Android 平臺 HTTP 堆棧遵守該策略,因為它們知道流量是否為明文。
Google AdMob 也是為了遵守此政策而構建的。當您的應用聲明它不使用明文流量時,應僅向應用投放 HTTPS 廣告。
鼓勵第三方網絡、廣告和分析庫添加對此策略的支持。他們可以通過 NetworkSecurityPolicy 類查詢明文流量策略。

TA貢獻2016條經驗 獲得超9個贊
在 AndroidManifest.xml 文件中添加以下代碼行:
android:usesCleartextTraffic="true"
雖然,這會給你警告:
它會暫時解決問題。但是您應該盡快遷移到“HTTPS”。
添加回答
舉報