@niknik_ykt
Не понимаю почему все это работает.

Почему WebView и ссылка tel: работают криво?

Приветы. Есть приложеник на минималках на webview. Собирал каркас на skethware, а потом допиливал на андрод студио. Кусок кода:
webview2.setWebViewClient(new WebViewClient() {
			@Override
			public void onPageStarted(WebView _param1, String _param2, Bitmap _param3) {
				if ((_param2.startsWith("https://wa.me/")) || (_param2.startsWith("https://vk.com/")) || (_param2.startsWith("https://instagram.com")) || (_param2.startsWith("https://www.facebook.com/")) || (_param2.startsWith("mailto:")) || (_param2.startsWith("viber://")) || (_param2.startsWith("https://www.gismeteo")) || (_param2.startsWith("https://t.me")) || (_param2.startsWith("https://twitter.com/")) || (_param2.startsWith("https://connect.ok.ru/")) || (_param2.startsWith("https://telegram.me/")) || (_param2.startsWith("https://api."))){
					webview2.stopLoading();
					intent1.setData(Uri.parse(_param2));
					intent1.setAction(Intent.ACTION_VIEW);
					webview2.goBack();
					startActivity(intent1);
				}
				_fab.hide();
				t = new TimerTask() {
					@Override
					public void run() {
						runOnUiThread(new Runnable() {
							@Override
							public void run() {
								webview2.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
                                webview2.getSettings().setJavaScriptEnabled(true);
                                webview2.getSettings().setSupportZoom(false);
							}
						});
					}
				};
				
				if (_param2.startsWith("file:///android_asset/www/index.html")) {
					webview2.clearHistory();
				}
				if (_param2.startsWith("tel:")) {
					webview2.stopLoading();
					intent1.setData(Uri.parse(_param2));
					webview2.goBack();
					intent1.setAction(Intent.ACTION_DIAL);
					webview2.loadUrl(String.valueOf(getCacheDir()));
					startActivity(intent1);
				}

И тут у меня проблема со ссыками, а именно со скоростью их обработки - нажимаю, к примеру, на t.me/my_acc, а приложение просто замирает на несколько секунд (видимо там чтото делает свое) и через некоторое время выполняет нужное действие. Так же и с остальными ссылками.
Исключение tel:, который сразу вызывает intent dial, но при этом на странице, на которой указан номер, как бы появляется не вилммая пленка, не дающая взаимодействовать со страницей. После этого с страницей можно взаимодействовать только после нажатия аппаратной кнопки назад, и то не всегда (выкидывает на предылущую страницу). Сам довольно далек от джава, а на изучение с нуля ни времени, ни возможности не имею. Подскажите, пожалуйста, как довести эти реакции до ума.
P.S. прогуглил несколько вариантов, но ни один из них не подошел. Скорее всего косяк мой, в силу не знания языка. К примеру вот этот:
private class CustomWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, String url) {
            if(url.startsWith("tel:")) {
                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse(url));
                startActivity(intent);
                return true;
            }
            return false;
        }
    }


P.S.2. Как сделать прогрессбар загрузки страницы как у хрома? Имею в виду синюю полоску сверху, который показывает статус и прогресс загрузки страницы, ничему и никому не мешая при этом
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы