Sto lavorando con Android e PhoneGap e al momento ho problemi con una cosa semplice. Devo configurare un webViewClient per la webView di PhoneGap in modo da catturare l'URL di una pagina finita e lavorare con quello.Android PhoneGap - TIMEOUT ERROR durante il tentativo di impostare un client WebView
Questo è il codice:
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);
}
});
}
Quel codice non sembra funzionare, la pagina mai carichi ed ottengo un errore di timeout, ma se mi tolgo la parte "setWebViewClient" la pagina viene caricata perfettamente.
Ho visto che esiste una classe CordovaWebViewClient, devo usare quella invece di WebViewClient? Ho trovato questo modo sul 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){
}
});
Ma anche questo codice non funziona, ho ancora un ERRORE DI TIMEOUT. Ho anche visto che c'è già un membro di webVieClient, ma non lo faccio se devo usarlo e come.
Sto lavorando con la versione 1.9.0 PhoneGap
Grazie per aver letto
Risposta a Simone:
Ha funzionato in questo modo, grazie!
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);
}
}
}
Grazie per la risposta di Simon, l'ho fatto, ma non funziona, ho aggiornato il primo post con il codice implementando quello che hai detto, è quello che hai detto? – Spike777
Alla fine ha funzionato chiamando "super.onPageFinished (view, url);" nel metodo onPageFinished ... grazie! – Spike777
Oh, ho appena pensato che funzioni solo nella versione 1.8.1, in 1.9.0 non funziona: genera un errore quando si chiama super.onPageStarted (...) – Spike777