Android Webview访问被拒绝

时间:2019-07-15 14:08:24

标签: android

在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。

7 个答案:

答案 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 框架构建应用,它可以为您提供有关网页可能发生的情况的更多见解。