我正在使用Android和Phonegap,此刻我遇到了一件簡單的事情。我需要將一個webViewClient設置爲PhoneGap webView,以便捕獲完成的頁面的URL並使用它。Android Phonegap - 嘗試設置WebViewClient時發生TIMEOUT錯誤
這是代碼:
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);
}
});
}
代碼不似乎工作,頁面不載入,我得到一個超時錯誤,但如果我刪除「setWebViewClient」的部分頁面加載完美。
我看到有一個類CordovaWebViewClient,我必須使用它而不是WebViewClient嗎?我在網絡上發現了這種方式:
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){
}
});
但是,該代碼也不工作,我仍然有一個超時錯誤。 我也看到,已經有一個webVieClient成員,但我不,如果我必須使用它和如何。
我與PhoneGap的版本1.9.0工作
感謝您閱讀
答西蒙:
它的工作就這樣,謝謝!
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);
}
}
}
謝謝您的回答西蒙,我這樣做,但它不起作用,我用代碼實現了你所說的更新了第一篇文章,那是你說的嗎? – Spike777
它最終調用了「super.onPageFinished(view,url);」在onPageFinished方法...謝謝! – Spike777
哦,我只是覺得它只適用於版本1.8.1,在1.9.0它不起作用:它調用super.onPageStarted時發生錯誤(...) – Spike777