Android Délai webview si cela prend plus de temps qu'un certain temps à charger
Je Veux délai d'attente de mon webview si cela prend beaucoup de temps à charger affichant un message d'erreur. Je suis en utilisant setWebViewClient
parce que j'ai besoin d'utiliser la public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error)
.
J'ai regardé autour et a vu que je peux utiliser la méthode onProgressChanged(WebView view, int newProgress)
. Maintenant, je ne peux pas utiliser cette méthode dans setWebViewClient
et ne peut pas comprendre comment aller sur la résolution de ce problème. Un autre problème que j'ai est que la barre de progression ne va jamais loin une fois que la page est chargée, je ne peux pas ajouter un point d'arrêt à la méthode public void onPageFinished(WebView view, String url)
.
Web Afficher Les Paramètres De La Méthode:
public void WebViewSettings(){
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.canGoBack();
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals(urlString)) {
//This is my web site, so do not override; let my WebView load the page
return false;
}
//Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
@Override
public void onLoadResource(WebView view, String url) {
//Check to see if there is a progress dialog
if (progressDialog == null) {
progressDialog = new ProgressDialog(context);
progressDialog.setTitle("Loading...");
progressDialog.setMessage("Please wait.");
//progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
progressDialog.show();
}
}
@Override
public void onPageFinished(WebView view, String url) {
//Page is done loading;
//hide the progress dialog and show the webview
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
webView.setEnabled(true);
}
}
@Override
public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
@Override
public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) {
Toast.makeText(context, "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show();
}
});
}
Afin que les problèmes que j'ai sont de la barre de progression n'est pas supprimé une fois que la page web a été chargé et j'ai besoin de délai d'expiration de la webview si c'prendre plus d'une certaine quantité de temps à charger. Il ressemble à la barre de progression s'affiche, puis disparaît comme il se doit, puis commence à charger de nouveau et wont stop. Grâce
OriginalL'auteur Paddy1990 | 2014-03-31
Vous devez vous connecter pour publier un commentaire.
J'ai mis à jour votre webview méthode de paramétrage, veuillez trouver ci-dessous le code à jour.
J'ai ajouté un loaderTimerTask classe. Ajout d'un code de la minuterie et de mettre des commentaires pour plus de compréhension. Veuillez mettre à jour ce code si vous en avez besoin.
//show error message as per you need.
, j'obtiens une erreur d'exécution disantCan't create handler inside thread that has not called looper.prepare()
. maintenant, j'ai regardé autour et c'est apparemment quelque chose à faire avec le fil, c'est sur, pouvez-vous suggérer quoi que ce soit?J'ai réussi à le résoudre, j'ai dû indiquer explicitement pour exécuter le message d'erreur dans
runOnUiThread(new Runnable(){public void run(){ Toast.makeText(context, "The web page timed out, try again", Toast.LENGTH_SHORT).show();}});
OriginalL'auteur Solution