【问题标题】:webview doesn't open some sites in recent versions of androidwebview 在最新版本的 android 中无法打开某些网站
【发布时间】:2020-04-28 09:20:39
【问题描述】:

我有一个可以打开 web 视图的应用,但我发现我无法在最新版本的 android 中打开某些网站。

在我收到错误 Page not found 之前,但我正在搜索并找到 this link 它说:

android:usesCleartextTraffic

指示应用程序是否打算使用明文网络流量,例如明文 HTTP。面向 API 级别 27 或更低级别的应用的默认值为“true”。面向 API 级别 28 或更高级别的应用默认为“false”。

...

所以我在AndroidManifest.xml 中添加了android:usesCleartextTraffic="true",现在webview 是白色的并且什么都不显示

我的网络浏览活动:

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);
}
}

有人可以帮忙吗?

更新:现在再次出现找不到页面

【问题讨论】:

  • 请不要用大写字母命名方法(OpenURL() 应该是 openUrl)????

标签: android android-studio webview


【解决方案1】:

我解决了。在我的AndroidManifest.xml 中,我将这两行“放在一起”,然后删除了android:networkSecurityConfig="@xml/network_security_config"

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

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多