Android Phonegap - TIMEOUT ERROR beim Versuch, einen WebViewClient einzurichten
Ich arbeite mit Android und Phonegap und im Moment habe ich Probleme mit einer einfachen Sache. Ich muss einen webViewClient für die PhoneGap-WebView einrichten, um die URL einer fertigen Seite zu erfassen und damit zu arbeiten.
Dies ist der Code:
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);
}
});
}
Dieser Code scheint nicht zu funktionieren, die Seite wird nie geladen und ich erhalte einen TIMEOUT-FEHLER, aber wenn ich den "setWebViewClient" -Teil entferne, wird die Seite perfekt geladen.
Ich habe gesehen, dass es eine Klasse CordovaWebViewClient gibt. Muss ich diese anstelle von WebViewClient verwenden? Ich habe diesen Weg im Web gefunden:
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){
}
});
Aber dieser Code funktioniert auch nicht, ich habe immer noch einen TIMEOUT-FEHLER. Ich habe auch gesehen, dass es bereits ein webVieClient-Mitglied gibt, aber ich weiß nicht, ob und wie ich es verwenden muss.
Ich arbeite mit Phonegap Version 1.9.0
Danke fürs Lesen
Antwort an Simon:
Es hat so funktioniert, danke!
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);
}
}
}