>source

Android 9 (Api 29)에서 URL을로드하려고하는데 "url : 웹 페이지를로드 할 수 없습니다 : 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
    }
});

Webview는 API 25를 실행하는 에뮬레이터를 사용할 때 URL을 올바르게로드합니다. API 28에서도 테스트되었으며 제대로 작동합니다. API 29에서만 작동하지 않습니다.


  • 답변 # 1

    너무 늦었지만. 나는 같은 문제에 직면했다. 웹 설정으로 고정됩니다. 다음은 예제 코드입니다.

       WebView webView = findViewById(R.id.webView);
        WebSettings webSettings = webView.getSettings();
        webSettings.setAppCacheEnabled(true);
        webSettings.setCacheMode(webSettings.LOAD_CACHE_ELSE_NETWORK);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setAllowFileAccess(true);
         //if SDK version is greater of 19 then activate hardware acceleration otherwise activate software acceleration
        if (Build.VERSION.SDK_INT >= 19) {
            webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        } else if (Build.VERSION.SDK_INT >= 11 && Build.VERSION.SDK_INT < 19) {
            webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        }
    
        webView.loadUrl("https://andela.com/alc/");
    
    

  • 답변 # 2

    SSL 인증서 던지기 오류 일 수 있습니다. 다음을 시도하십시오 :

    // Ignoring SSL certificate errors
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) {
       handler.proceed();
    }
    
    

    Android Smart WebView프레임 워크를 사용하여 앱을 빌드하면 웹 페이지에서 어떤 일이 벌어지고 있는지에 대한 더 많은 정보를 얻을 수 있습니다.

관련 자료

  • 이전 c - 매개 변수가있는 함수 내에서 함수를 호출하는 방법은 무엇입니까?
  • 다음 swift - UIKitForMac 용 iPad 앱을 빌드 할 때 빌드 오류