Estoy trabajando con Android y Phonegap, y por el momento estoy teniendo problemas con una cosa simple. Necesito configurar un webViewClient en PhoneGap webView para capturar la URL de una página finalizada y trabajar con eso.Android Phonegap - TIMEOUT ERROR al intentar establecer un WebViewClient
Este es el código:
public class PhoneGapTest extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setBooleanProperty("loadInWebView", true);
super.clearCache();
super.keepRunning = false;
super.loadUrl("file:///android_asset/www/index.html");
super.appView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap bitmap) {
Log.i("TEST", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.i("TEST", "onPageFinished: " + url);
}
});
}
Ese código no parece funcionar, la página de cargas y nunca me sale un error de tiempo de espera, pero si quito el "setWebViewClient" parte se carga la página perfectamente.
Vi que hay una clase CordovaWebViewClient, ¿tengo que usar eso en lugar de WebViewClient? He encontrado de esta manera en la web:
this.appView.setWebViewClient(new CordovaWebViewClient(this){
@Override
public boolean shouldOverrideUrlLoading(final WebView view, String url) {
Log.i("BugTest", "shouldOverrideUrlLoading: " + url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap bitmap) {
Log.i("TEST", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.i("TEST", "onPageFinished: " + url);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){
}
});
Pero ese código no está funcionando bien, yo todavía tengo un error del descanso. También vi que ya hay un miembro webVieClient, pero no si tengo que usarlo y cómo.
estoy trabajando con la versión 1.9.0 Phonegap
Gracias por leer
respuesta a Simón:
Funcionó de esta manera, gracias!
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
super.appView.clearCache(true);
super.appView.clearHistory();
this.appView.setWebViewClient(new CustomCordovaWebViewClient(this));
super.loadUrl("file:///android_asset/www/index.html");
}
public class CustomCordovaWebViewClient extends CordovaWebViewClient {
public CustomCordovaWebViewClient(DroidGap ctx) {
super(ctx);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap bitmap) {
super.onPageStarted(view, url, bitmap);
Log.i("TEST", "onPageStarted: " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.i("TEST", "onPageFinished: " + url);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload){
super.doUpdateVisitedHistory(view, url, isReload);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
}
Gracias por su respuesta Simon, lo hice, pero no funciona, actualicé la primera publicación con el código implementando lo que dijiste, ¿es eso lo que dijiste? – Spike777
Finalmente funcionó llamando a "super.onPageFinished (view, url);" en el método onPageFinished ... ¡gracias! – Spike777
Oh, me di cuenta de que solo funciona en la versión 1.8.1, en 1.9.0 no funciona: arroja un error al llamar a super.onPageStarted (...) – Spike777