Android P-NetworkSecurityPolicy.isClearTextTrafficAllowed false当网络安全配置基本配置ClearTextTrafficAllowed true时
这是在Android p上使用的支持库版本28.0.0-rc01 我根据几个SO帖子遵循了该问题的说明/解决方案: 还有其他几个 问题是,即使network security config base config将此值设置为true,但当我检查NetworkSecurityPolicy.isClearTextTrafficAllowed时,它返回false。这导致在WebView中导航到非https页面时出现错误CLEARTEXT不允许的错误 下面是AndroidManifest的一段Android P-NetworkSecurityPolicy.isClearTextTrafficAllowed false当网络安全配置基本配置ClearTextTrafficAllowed true时,android,http,https,android-9.0-pie,Android,Http,Https,Android 9.0 Pie,这是在Android p上使用的支持库版本28.0.0-rc01 我根据几个SO帖子遵循了该问题的说明/解决方案: 还有其他几个 问题是,即使network security config base config将此值设置为true,但当我检查NetworkSecurityPolicy.isClearTextTrafficAllowed时,它返回false。这导致在WebView中导航到非https页面时出现错误CLEARTEXT不允许的错误 下面是AndroidManifest的一段 &l
<application
...
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_security_config"
android:usesCleartextTraffic="true">
我尝试过将“UseSLeartextTraffic”和“networkSecurityConfig”结合使用,两者都包括在内
以下是相关的网络安全配置
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" >
<trust-anchors>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>
请注意,我尝试过使用和不使用“信任锚”。我有prod AndroidManifest和网络安全配置以及调试版本。但是,两者具有相同的设置(除系统外,调试还允许用户证书)
我还通过检查logcat验证了正在读入安全策略。在这一点上,我感到茫然,因为它似乎是设置不被尊重
任何帮助都将不胜感激。出于某种原因,调试AndroidManifest和网络安全配置导致了问题,尽管设置几乎相同——唯一的区别是调试版本还允许用户生成证书
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:networkSecurityConfig="@xml/network_security_config"
tools:targetApi="n" />
</manifest>
删除debug AndroidManifest.xml和network_security_config.xml文件解决了该问题。我仍然不知道为什么会这样,但我们不再需要调试清单,所以现在就开始吧。我只有:
android:usesCleartextTraffic="true"
在清单中,并删除
网络安全配置.xml
。这似乎奏效了 这是可行的,但我认为这是另一个问题。在我的应用程序中,我试图调试http
调用,但我认为安卓9不赞成这样做,默认情况下只支持https
?我猜iOS中也发生了类似的事情。添加该字段只会创建一个异常,允许Android 9使用http
API
android:usesCleartextTraffic="true"