webview не открывает некоторые сайты в последних версиях android - PullRequest
0 голосов
/ 10 января 2020

У меня есть приложение, которое открывает веб-просмотр, и я обнаружил, что не могу открыть некоторые сайты в последних версиях android.

До того, как я получил ошибку Page not found, но я искал, и я найдено эта ссылка где сказано:

android: ИспользоватьCleartextTraffi c

Указывает, намеревается ли приложение использовать сетевой трафик в открытом тексте c, такой как открытый текст HTTP. Значением по умолчанию для приложений с целевым уровнем API 27 или ниже является «true». Приложения, которые нацелены на уровень API 28 или выше, по умолчанию имеют значение «false».

...

Поэтому я добавляю android:usesCleartextTraffic="true" в AndroidManifest.xml, и теперь веб-представление становится белым и не отображается. ничего не показывать

моя активность в веб-просмотре:

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

Кто-то может помочь?

ОБНОВЛЕНИЕ: Теперь снова появилось, что страница не была найдена

1 Ответ

0 голосов
/ 13 января 2020

Я решил это. В моем AndroidManifest.xml у меня были эти 2 строки 'вместе', и я удалил android:networkSecurityConfig="@xml/network_security_config":

<application
    ...
    android:networkSecurityConfig="@xml/network_security_config" <!--I removed that one -->
    android:usesCleartextTraffic="true"
>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...