2012-07-03 12 views
6

सेट करने का प्रयास करते समय TIMEOUT त्रुटि जब मैं एंड्रॉइड और फोनगैप के साथ काम कर रहा हूं, और इस समय मुझे एक साधारण चीज़ में परेशानी हो रही है। मुझे समाप्त हुए पृष्ठ के यूआरएल को कैप्चर करने और उसके साथ काम करने के लिए फोनगैप वेब व्यू में एक वेब व्यू क्लाइंट स्थापित करने की आवश्यकता है।एंड्रॉइड फोनगैप - WebViewClient

इस कोड है:

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" भाग पृष्ठ लोड को हटा दें।

मैंने देखा कि क्लास कॉर्डोवा वेब दृश्य क्लाइंट है, क्या मुझे इसका उपयोग 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){   
      } 

     }); 

लेकिन वह कोड या तो काम नहीं कर रहा है, मुझे अभी भी एक टाइमआउट त्रुटि मिली है। मैंने यह भी देखा कि पहले से ही एक वेबवी क्लाइंट सदस्य है, लेकिन मुझे नहीं लगता कि मुझे इसका उपयोग करना है और कैसे।

मैं 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); 
} 

} 

} 

उत्तर

5

कि आप क्या करना मैं CordovaWebViewClient वर्ग का विस्तार करने और तरीकों आप चाहते हैं ओवरराइड होगा चाहते हैं पूरा करने के लिए, लेकिन मत भूलना सुपर तरीकों कॉल करने के लिए या PhoneGap CordovaWebViewClient बिना काम नहीं करेगा के रूप में यह एक महत्वपूर्ण है कक्षा।

+0

आपका जवाब साइमन के लिए धन्यवाद, मैंने वह किया, लेकिन यह काम नहीं करता है, मैंने आपके द्वारा जो कहा है उसे लागू करने वाले कोड के साथ पहली पोस्ट अपडेट की है, क्या आपने कहा है? – Spike777

+0

आखिर में कॉलिंग "super.onPageFinished (देखें, यूआरएल);" OnPageFinished विधि में ... धन्यवाद! – Spike777

+0

ओह, मुझे लगा कि यह केवल 1.9.1 में संस्करण 1.8.1 में काम करता है, यह काम नहीं करता है: सुपर.ऑनपेजस्टार्ट (...) – Spike777

7

मुझे लगता है कि मैंने इसे नवीनतम कॉर्डोवा संस्करणों (मैं 2.2 का उपयोग कर रहा हूं) पर पाया है। यह onPageStarted() पर विफल रहता है क्योंकि यह ऐप व्यू की अपेक्षा कर रहा है, जो शून्य है। स्थापना APPVIEW इसे ठीक करने जैसे

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.init(); 

    CordovaWebViewClient webViewClient = new CustomAcceptingWebViewClient(this); 
    webViewClient.setWebView(this.appView); 
    this.appView.setWebViewClient(webViewClient); 

    super.loadUrl("file:///android_asset/www/index.html"); 

} 

नोट super.init() भी

+0

धन्यवाद। यह कॉर्डोवा 2.8.1 में एक आकर्षण की तरह काम करता है। – shamittomar

0

की जरूरत है कि आप सुपर कॉल करने के लिए भूल गया लगता है,)

// Assign webclient. 
    this.appView.setWebViewClient(new CordovaWebViewClient(me, this.appView) { 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      super.onReceivedError(view, errorCode, description, failingUrl); 
     } 
    }); 
संबंधित मुद्दे