Android Webview访问被拒绝

Jos*_*eph 6 android

在Android 9(Api 29)上,我试图加载一个网址,但出现错误“无法加载该网址的网页,因为:net :: ERR_ACCESS_DENIED”。

我在AndroidManifest.xml文件中拥有互联网访问权限

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

从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/");
Run Code Online (Sandbox Code Playgroud)

稍后,我添加了以下代码以获取更多详细信息:

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
    }
});
Run Code Online (Sandbox Code Playgroud)

使用运行API 25的仿真器时,Webview会正确加载URL。也已在API 28上进行了测试,并且运行良好。仅在API 29上不起作用。

Iev*_*gen 7

在我的情况下,网页变得正确加载(不ERR_ACCESS_DENIED改变之后)applicationIdbuild.gradle(和运行应用程序的课程)。之后,您可以归还旧的applicationId.

  • 这很奇怪,在更改了“applicationId”之后它就起作用了。但返回旧的“applicationId”再次停止工作 (3认同)
  • 这不是一个解决方案。如果我更改“applicationId”,我将无法部署它。 (2认同)

小智 6

只需卸载该应用程序并再次安装它。那工作 100%

  • 我不敢相信,但这确实有效 (2认同)

mgk*_*gks -1

可能是 SSL 证书抛出错误,请尝试以下操作:

// Ignoring SSL certificate errors

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) {
   handler.proceed();
}
Run Code Online (Sandbox Code Playgroud)

您可以尝试使用Android Smart WebView框架构建您的应用程序,它可以让您更深入地了解网页可能发生的情况。