webview doesn't open some sites in recent versions of android

妖精的绣舞 提交于 2020-01-16 08:41:09

问题


I have an app that open a webview and I found that I can't open some sites in recent versions of android.

Before I got the error Page not found but I was searching and I found this link where it say:

android:usesCleartextTraffic

Indicates whether the app intends to use cleartext network traffic, such as cleartext HTTP. The default value for apps that target API level 27 or lower is "true". Apps that target API level 28 or higher default to "false".

...

So I add android:usesCleartextTraffic="true" in AndroidManifest.xml and now the webview is white and doesn't show nothing

my webview activity:

public class WebviewUrl extends AppCompatActivity {
private WebView webView;

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide();
    setContentView(R.layout.activity_webview_url);

    openURL();
}

private void openURL() {
    Intent getUrl = getIntent();
    String url = getUrl.getStringExtra("url");

    webView = findViewById(R.id.webview);
    webView.setWebViewClient(new WebViewClient());
    webView.loadUrl(url);

    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

    WebSettings webSettings = webView.getSettings();
    webSettings.setDomStorageEnabled(true);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setLoadsImagesAutomatically(true);

    webView.getSettings().setSupportMultipleWindows(true);
    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);

    webView.setWebViewClient(new WebViewClient() {
        @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            webView.loadUrl("file:///android_asset/error.html");
        } });

    webView.addJavascriptInterface(new WebAppInterface(this), "Android");
}

@Override
public void onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack();
    }
    else {
        super.onBackPressed();
    }
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    webView.saveState(outState);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
        webView.goBack();
        return true;
    }
    else
    {
        finish();
    }
    return super.onKeyDown(keyCode, event);
}
}

Someone can help?

UPDATE: Now reappeared that the page was not found


回答1:


I solved it. In my AndroidManifest.xml I had this 2 lines 'together' and I removed android:networkSecurityConfig="@xml/network_security_config":

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config" <!--I removed that one -->
    android:usesCleartextTraffic="true"
>


来源:https://stackoverflow.com/questions/59686516/webview-doesnt-open-some-sites-in-recent-versions-of-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!