在Android 9(Api 29)上,我试图加载一个网址,但出现错误“由于net :: ERR_ACCESS_DENIED而无法加载该网址的网页”。
我在AndroidManifest.xml
文件中拥有互联网访问权限
<uses-permission android:name="android.permission.INTERNET" />
从logcat中,我也可以看到以下错误:
E/chromium: [ERROR:socket_posix.cc(94)] CreatePlatformSocket() failed: Operation not permitted (1)
我的代码如下:
WebView webView = findViewById(R.id.webView);
webView.loadUrl("https://andela.com/alc/");
我后来添加了以下代码以获取更多详细信息:
webView.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
Log.d("TAG", error.getDescription().toString());
// handler.proceed(); This line wont make a different on API 29, Webview still bank
}
});
使用运行API 25的模拟器时,Webview会正确加载url。也已在API 28上进行了测试,并且工作正常。仅不适用于API 29。
答案 0 :(得分:1)
这在最新的“ Q Android 10”中已被打破,将目标框架工作更改为“ Pie- Android 9”即可使用。转到
文件>项目结构
然后在左侧>模块>编译器SK版本(更改为Api 28)
注意:如果尚未安装Android PIE或未显示该选项,请转到“偏好设置”>“系统偏好设置”>左侧的Android SDK
答案 1 :(得分:1)
只需卸载该应用,然后再次安装它即可。100%工作
答案 2 :(得分:0)
在我的情况下,在ERR_ACCESS_DENIED
中更改applicationId
之后,网页将正确加载(没有build.gradle
)(当然,然后运行该应用程序)。之后,您可以返回旧的applicationId
。
答案 3 :(得分:0)
从仿真器或电话上完全卸载应用程序,然后重新编译或安装。应该已经可以了。
答案 4 :(得分:0)
先卸载应用程序,然后在插入权限后重新安装
<uses-permission android:name="android.permission.INTERNET" />
不要只是重启。
答案 5 :(得分:-1)
尽管为时已晚。我也遇到过同样的问题。并通过网络设置进行修复。下面给出了示例代码。
BID_Close_Last
答案 6 :(得分:-1)
可能是SSL证书抛出错误,请尝试以下操作:
// Ignoring SSL certificate errors
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) {
handler.proceed();
}
您可以尝试使用 Android Smart WebView 框架构建应用,它可以为您提供有关网页可能发生的情况的更多见解。