Android 无法使用 HTTP 超链接加载 Webview 页面,因为 ERR_CLEARTEXT_NOT_PERMITTED
Android Webview page could not be loaded with HTTP hyperlink because ERR_CLEARTEXT_NOT_PERMITTED
我正在开发一个 android 本机应用程序,我正在从 strings.xml 的 WebView 中加载一个 HTML 字符串,其中包含一些超链接文本。其中一个超链接具有 http
url 并且未在 webView 中打开并抛出错误 ERR_CLEARTEXT_NOT_PERMITTED
。我已经在我的应用程序中使用了 usesCleartextTraffic
设置,但仍然无法使用它。
AndroidManifest.xml
<application
android:name=".com.app"
android:allowBackup="false"
android:icon="@mipmap/ic_hp_launcher"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_hp_launcher_round"
android:supportsRtl="false"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</debug-overrides>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<!-- Make sure your URL Server here -->
<domain includeSubdomains="true">https://xxxxxx.base.url</domain>
<domain includeSubdomains="true">http://.xxxx.org</domain>
<trust-anchors>
<certificates src="user"/>
<certificates src="system"/>
</trust-anchors>
</domain-config>
UIClass.kt
//Enabling JS for allowing all hyperlinks
binding.webView.settings.javaScriptEnabled = true
binding.webView.settings.javaScriptCanOpenWindowsAutomatically = true
build.gradle
minSdkVersion 28
targetSdkVersion 30
如果我做错了,请告诉我。提前致谢。
我通过两个选项解决了这个问题。
选项 1:
我从 AndroidManifest.xml
文件中删除了一行
android:networkSecurityConfig="@xml/network_security_config"
选项 2:
在 build.gradle
文件的 defaultConfig
列下添加了 http 遗留库作为
useLibrary 'org.apache.http.legacy'
我正在开发一个 android 本机应用程序,我正在从 strings.xml 的 WebView 中加载一个 HTML 字符串,其中包含一些超链接文本。其中一个超链接具有 http
url 并且未在 webView 中打开并抛出错误 ERR_CLEARTEXT_NOT_PERMITTED
。我已经在我的应用程序中使用了 usesCleartextTraffic
设置,但仍然无法使用它。
AndroidManifest.xml
<application
android:name=".com.app"
android:allowBackup="false"
android:icon="@mipmap/ic_hp_launcher"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_hp_launcher_round"
android:supportsRtl="false"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</debug-overrides>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config cleartextTrafficPermitted="true">
<!-- Make sure your URL Server here -->
<domain includeSubdomains="true">https://xxxxxx.base.url</domain>
<domain includeSubdomains="true">http://.xxxx.org</domain>
<trust-anchors>
<certificates src="user"/>
<certificates src="system"/>
</trust-anchors>
</domain-config>
UIClass.kt
//Enabling JS for allowing all hyperlinks
binding.webView.settings.javaScriptEnabled = true
binding.webView.settings.javaScriptCanOpenWindowsAutomatically = true
build.gradle
minSdkVersion 28
targetSdkVersion 30
如果我做错了,请告诉我。提前致谢。
我通过两个选项解决了这个问题。
选项 1:
我从 AndroidManifest.xml
文件中删除了一行
android:networkSecurityConfig="@xml/network_security_config"
选项 2:
在 build.gradle
文件的 defaultConfig
列下添加了 http 遗留库作为
useLibrary 'org.apache.http.legacy'