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

前端之家收集整理的这篇文章主要介绍了Android Phonegap – 尝试设置WebViewClient时出现TIMEOUT ERROR前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 Android和Phonegap,目前我遇到了一个简单的问题.我需要将一个webViewClient设置到PhoneGap webView,以便捕获已完成页面的URL并使用它.

这是代码

  1. public class PhoneGapTest extends DroidGap {
  2.  
  3. @Override
  4. public void onCreate(Bundle savedInstanceState)
  5. {
  6. super.onCreate(savedInstanceState);
  7. super.setBooleanProperty("loadInWebView",true);
  8. super.clearCache();
  9. super.keepRunning = false;
  10. super.loadUrl("file:///android_asset/www/index.html");
  11.  
  12. super.appView.setWebViewClient(new WebViewClient(){
  13.  
  14. @Override
  15. public void onPageStarted(WebView view,String url,Bitmap bitmap) {
  16.  
  17. Log.i("TEST","onPageStarted: " + url);
  18.  
  19. }
  20.  
  21. @Override
  22. public void onPageFinished(WebView view,String url) {
  23.  
  24. Log.i("TEST","onPageFinished: " + url);
  25.  
  26. }
  27.  
  28. });
  29.  
  30. }

代码似乎不起作用,页面永远不会加载,我得到一个TIMEOUT ERROR,但如果我删除“setWebViewClient”部分页面加载完美.

我看到有一个类CordovaWebViewClient,我是否必须使用它而不是WebViewClient?我在网上找到了这种方式:

  1. this.appView.setWebViewClient(new CordovaWebViewClient(this){
  2.  
  3. @Override
  4. public boolean shouldOverrideUrlLoading(final WebView view,String url) {
  5. Log.i("BugTest","shouldOverrideUrlLoading: " + url);
  6. return true;
  7. }
  8.  
  9. @Override
  10. public void onPageStarted(WebView view,"onPageFinished: " + url);
  11.  
  12. }
  13.  
  14. @Override
  15. public void doUpdateVisitedHistory(WebView view,boolean isReload){
  16. }
  17.  
  18. });

但是那个代码也不起作用,我仍然有一个TIMEOUT ERROR.
我还看到已经有一个webVieClient成员,但如果我必须使用它以及如何使用它我不会.

我正在使用Phonegap 1.9.0版

谢谢阅读

对西蒙的回答:

这样工作,谢谢!

  1. public class MainActivity extends DroidGap {
  2.  
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5.  
  6. super.onCreate(savedInstanceState);
  7. super.init();
  8. super.appView.clearCache(true);
  9. super.appView.clearHistory();
  10. this.appView.setWebViewClient(new CustomCordovaWebViewClient(this));
  11. super.loadUrl("file:///android_asset/www/index.html");
  12. }
  13.  
  14. public class CustomCordovaWebViewClient extends CordovaWebViewClient {
  15.  
  16. public CustomCordovaWebViewClient(DroidGap ctx) {
  17. super(ctx);
  18. }
  19.  
  20. @Override
  21. public void onPageStarted(WebView view,Bitmap bitmap) {
  22. super.onPageStarted(view,url,bitmap);
  23. Log.i("TEST","onPageStarted: " + url);
  24. }
  25.  
  26. @Override
  27. public void onPageFinished(WebView view,String url) {
  28. super.onPageFinished(view,url);
  29. Log.i("TEST","onPageFinished: " + url);
  30. }
  31.  
  32. @Override
  33. public void doUpdateVisitedHistory(WebView view,boolean isReload){
  34. super.doUpdateVisitedHistory(view,isReload);
  35. }
  36.  
  37. @Override
  38. public void onReceivedError(WebView view,int errorCode,String description,String failingUrl) {
  39. super.onReceivedError(view,errorCode,description,failingUrl);
  40. }
  41.  
  42. }
  43.  
  44. }

解决方法

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

猜你在找的Android相关文章