WebChromeClient в устройстве Android не работает
У меня есть этот код с загрузкой веб-просмотра, который использует свойства Google Chrome.
Проблема в том, что эмулятор веб-просмотра загружает URL-адрес, содержащий html5, и он отлично работает, но на устройстве Android, использующем свойства браузера по умолчанию и html5, очевидно, не работает URL-адрес.
Как я могу в веб-браузере на устройстве Android использовать свойства браузера Google Chrome, а не браузера по умолчанию?
Любая помощь?
Спасибо
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
// Capturo las variables que dejo en memoria, nombre y email
SharedPreferences sp1 = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
emailAdd = sp1.getString("EMAILADDRESS", "");
name = sp1.getString("NAME", "");
//-----------------------------------------------
View x = inflater.inflate(R.layout.patrocinadores, container, false);
String url = "http://xxxx.co/xxxx/xxxx.php?email="+ emailAdd + "";
mWebView = (WebView) x.findViewById(R.id.webView1);
// Para colocar un loading
pd = ProgressDialog.show(getActivity(), "", "Loading...",true);
//--------------------------
if(mWebView != null){
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setAppCacheEnabled(false);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAllowContentAccess(true);
mWebView.loadUrl(url);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient() {
// Coloca un loading mientras se carga el webview y se quita cuando se carga la pagina
public void onPageFinished(WebView view, String url) {
if(pd.isShowing()&&pd!=null)
{
pd.dismiss();
}
}
//-----------------------------------------------
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
}
return x;
}
1 ответ
Я не уверен, что точно понимаю, о чем вы говорите, но HTML5 поддерживается и должен работать в вашем приложении, если вы отвечаете за некоторые элементы.
Во-первых, WebChromeClient()
относится не к браузеру Google Chrome, а к оригинальной терминологии Chrome, представляющей элементы пользовательского интерфейса, окружающие веб-страницу (IE, кнопки, полосы прокрутки и т. д.). В этом смысле вы можете переопределить определенные поведения по умолчанию, такие как всплывающие окна / уведомления JavaScript, заголовки и другие функции окна, реализуя свои собственные WebChromeClient()
как вы сделали с WebViewClient()
,
Вы можете увидеть другое определение здесь: https://developer.mozilla.org/en-US/docs/Glossary/Chrome
Кроме того, если вы имеете в виду масштабирование и компоновку, я бы направил вас к обзору WebView, в частности к Pixel-Perfect UI. Например, настройка порта просмотра и режима обзора:
mWebView.getSettings().setUseWideViewPort(true)
mWebView.getSettings().setLoadWithOverviewMode(true)
Редактировать:
Индикатор не работает должным образом. Попробуйте позвонить mWebView.loadUrl(url)
после того, как вы установили клиентов.
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient(){...});
mWebView.loadUrl(url);
И переопределить onPageStarted()
в пределах WebViewClient()
:
@Override
public void onPageStarted (WebView view, String url, Bitmap favicon) {
pd.show();
}