У меня есть гибридное приложение для Android, которое использует webView для загрузки большого количества веб-страниц, большого в смысле содержания.На одной из страниц есть кнопка, которая позволяет пользователю сделать голосовой вызов с помощью:
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(URL)));
Проблема в том, что при первом запуске приложения все работает нормально, но после запуска пользователязагрузка нескольких других страниц (может быть много), когда страница с кнопкой для вызова загружает эту кнопку вызова, не будет работать.Да, сенсорное событие работает, потому что onClick всплывающее окно появляется, как и должно быть, но ACTION_DIAL
не работает.И набор текста внутри текстовых полей становится очень запаздывающим.
Эта же страница отлично работает на других вновь установленных устройствах
shouldOverrideUrlLoading
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url.startsWith("tel:")) {
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
return true;
}
return false;
}
WebSettings
settings.setBuiltInZoomControls(true);
settings.setDisplayZoomControls(false);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setJavaScriptEnabled(true);
settings.setAppCacheEnabled(false);
settings.getJavaScriptCanOpenWindowsAutomatically();
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
webView.requestFocusFromTouch();
webView.requestFocus(View.FOCUS_DOWN);
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
Однако после очистки данных приложения из Настройки -> Установленные приложения и при перезапуске все работает нормально, но через день или два снова происходит то же самое.
Я переключил эти вещи, но не использовал:
settings.setAppCacheEnabled(true);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);