安卓开发中使用webview时候的产生的ERR_ACCESS_DENIED错误
时间: 2023-12-02 09:04:49 浏览: 59
ERR_ACCESS_DENIED 错误通常是由于 Android 应用程序的网络安全策略导致的。在 Android 9.0 及以上版本中,默认情况下禁止应用程序加载 HTTP 非安全资源。为了解决这个问题,您可以尝试以下几种方法:
1. 在 AndroidManifest.xml 文件中添加以下代码,以允许应用程序加载非安全的 HTTP 资源:
```
<application
android:usesCleartextTraffic="true"
...>
...
</application>
```
2. 如果您的应用程序需要加载 HTTPS 资源,则需要在 WebView 设置中启用混合内容模式:
```
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
```
3. 如果您的应用程序需要加载本地 HTML 文件,则需要添加以下代码:
```
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowContentAccess(true);
```
请注意,允许非安全的 HTTP 资源可能会导致安全风险,请确保您的应用程序已经采取了必要的安全措施来保护用户数据和隐私。
相关问题
android webview 访问 HTTPS ERR_SSL_PROTOCOL_ERROR
出现 ERR_SSL_PROTOCOL_ERROR 错误通常是由于 SSL/TLS 协议版本不匹配导致的。这可能是由于 Android 系统版本过低,不支持网站使用的 SSL/TLS 协议版本或加密算法。
解决方法如下:
1. 确认 Android 系统版本是否支持网站使用的 SSL/TLS 协议版本或加密算法。如果不支持,建议升级 Android 系统版本。
2. 在 WebView 中设置支持使用的 SSL/TLS 协议版本或加密算法。可以通过 WebView 的 setWebViewClient 方法设置 SSL/TLS 配置:
```java
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
// 忽略 SSL 错误,继续加载页面
handler.proceed();
}
});
```
在 onReceivedSslError 方法中,可以忽略 SSL 错误并继续加载页面。但这样做会降低安全性,不建议在正式项目中使用。
3. 如果以上方法都无法解决问题,建议联系网站管理员,确认网站的 SSL/TLS 配置是否正确。
android webview err_name_not_resolved
"err_name_not_resolved"是一个常见的Android WebView错误,它表示域名无法解析。当您在WebView中加载一个网页时,系统会尝试通过域名解析服务器的IP地址,以便连接到该网页。如果解析失败,就会出现"err_name_not_resolved"错误。
出现这个错误的原因可能有以下几种:
1. 网络连接问题:请确保您的设备处于正常的网络环境中,可以通过正常的方式访问互联网。可以尝试切换到其他网络或者重启设备来解决网络连接问题。
2. DNS问题:一些网络运营商可能会使用非常规的DNS服务器,导致域名无法解析。可以尝试更换您设备的DNS服务器,或者使用一个可靠的公共DNS服务器(如Google的8.8.8.8)。
3. 域名错误:请确保您输入的域名是正确的,并且没有拼写错误。如果域名存在拼写错误,则无法解析到正确的IP地址。
4. 防火墙或代理设置:某些防火墙或代理设置可能会阻止您的设备解析特定的域名。可以尝试调整您的设备防火墙或代理设置,或者使用不同的网络环境。
如果仍然无法解决问题,可以尝试在WebView加载页面之前手动解析域名,然后使用得到的IP地址进行加载。可以使用Java中的InetAddress类的getByName()方法来解析域名。
总的来说,"err_name_not_resolved"错误通常是由于网络连接问题、DNS问题、域名错误或防火墙/代理设置引起的。根据具体情况,您可以采取相应的措施解决这个错误。