问题
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