Android Phonegap – 尝试设置WebViewClient时出现TIMEOUT ERROR

我正在使用 Android和Phonegap,目前我遇到了一个简单的问题.我需要将一个webViewClient设置到PhoneGap webView,以便捕获已完成页面的URL并使用它.

这是代码:

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);

          }

        });

    }

该代码似乎不起作用,页面永远不会加载,我得到一个TIMEOUT ERROR,但如果我删除“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,"onPageFinished: " + url);

          }

          @Override
          public void doUpdateVisitedHistory(WebView view,boolean isReload){        
          }

        });

但是那个代码也不起作用,我仍然有一个TIMEOUT ERROR.
我还看到已经有一个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,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,boolean isReload){  
     super.doUpdateVisitedHistory(view,isReload);  
 }

 @Override
 public void onReceivedError(WebView view,int errorCode,String description,String failingUrl) {
     super.onReceivedError(view,errorCode,description,failingUrl);
 }

}

}

解决方法

要完成你想做的事情,我会扩展CordovaWebViewClient类并覆盖你想要的方法,但不要忘记调用超级方法,否则没有CordovaWebViewClient,PhoneGap将无法工作,因为它是一个重要的类.

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...