Сайт загружается в другие браузеры, но не Android Webview - PullRequest
0 голосов
/ 31 марта 2020

Это мой сайт: https://tpc.scheimong.net: 443 /

Это простой персональный тестовый сайт c со надлежащим сертификатом TLS. И Chrome и Firefox на Windows, Linux и Android загружают этот сайт нормально.

Однако в Android Webview он не загружается по какой-то странной причине. Он просто показывает пустой экран, даже не сообщение об ошибке. Этот код очень прост c.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final WebView mainWv = (WebView) findViewById(R.id.mainWv);
        mainWv.getSettings().setJavaScriptEnabled(true);
        mainWv.loadUrl("https://tpc.scheimong.net:443/");
    }
}

Интересные наблюдения:

На самом деле этот код даже не отправляет запрос на мой сервер, который является просто странным. (У меня есть доступ к консоли сервера, которая не показывает запросов.)


То, что я уже сделал / попробовал:

Inte rnet разрешение было добавлено в манифест.

Использование WebChromeClient дает тот же результат.

Загрузка через IP напрямую дает тот же результат.

Загрузка без порта дает тот же результат.

Загрузка других сайтов работает нормально, например mainWv.loadUrl("https://google.com/");.


Эта проблема настолько странная, что я даже не представляю себе, с чего начать отладку. Пожалуйста помоги. Также я хотел бы знать, если у вас есть успех в других физических местах. Сервер расположен в Сан-Хосе.


Веб-просмотр работает на эмулированных Android 9 (API 28) и Google Pixel 3a Android 10 (API 29)

1 Ответ

1 голос
/ 31 марта 2020

Вы добавили разрешение inte rnet в свой манифест? если нет, добавьте следующую строку.

<uses-permission android:name="android.permission.INTERNET"/> 

Замените код:

 public class MainActivity extends AppCompatActivity {



    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        WebView webView = findViewById(R.id.webview_compontent);

        webView.getSettings().setJavaScriptEnabled(true);

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

        webView.setWebViewClient(new WebViewController());
        webView.loadUrl("https://tpc.scheimong.net");



    }
    public class WebViewController extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
            final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setMessage("Error");
            builder.setPositiveButton("Continue", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.proceed();
                }
            });
            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    handler.cancel();
                }
            });
            final AlertDialog dialog = builder.create();
            dialog.show();
        }

    }

}

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...