2011-05-25 9 views
6

मैं एक एंड्रॉइड एप्लिकेशन बना रहा हूं, अन्य चीजों के साथ, वेबसाइटों को वेबव्यू में दिखाता है। जहां तक ​​मैं समझता हूं, यदि कोई कनेक्शन स्थापित नहीं किया जा सकता है तो वेबव्यू स्वचालित रूप से पृष्ठ के कैश किए गए संस्करण को दिखाता है।पता लगाएं कि क्या एंड्रॉइड वेबव्यू कैश किया गया पृष्ठ दिखा रहा है

क्या यह पता लगाने का कोई तरीका है कि सर्वर या कैश से दिखाया गया पृष्ठ क्या है?

शायद कैश पृष्ठ कितना पुराना है।

यह उपयोगकर्ता को सूचित करने में सक्षम होना चाहिए यदि वह पुरानी जानकारी देख रहा है।

उत्तर

7

आप एक हैक की कोशिश कर सकते कैशेड किए जाने से पेज को रोकने की जाएगी - पहला सेट WebView के cache modeWebSettings.NO_CACHE के लिए और लोड URL पर। फिर, इस तरह एक कस्टम WebChromeClient बनाएं:

final String urlToLoad = "http://www.my-url.com"; 
webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onReceivedError(WebView view, int errorCode, 
      String description, String failingUrl) 
    { 
     if (view.getSettings().getCacheMode() == WebSettings.LOAD_NO_CACHE && urlToLoad.equals(failingUrl)) 
     { 
      view.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY); 
      view.loadUrl(urlToLoad); 
      return; 
     } 
     else 
     if (urlToLoad.equals(failingUrl)) 
     { 
      // cache failed as well, load a local resource as last resort 
      // or inform the user 
     } 
     super.onReceivedError(view, errorCode, description, failingUrl); 
    } 
}); 
webview.loadUrl(urlToLoad); 
+0

यह अभी भी ऐसा हैक है। किसी दिए गए यूआरएल के लिए कैश मौजूद है या नहीं, यह जांचने का कोई तरीका नहीं है? संपादित करें: और यदि कैश मौजूद है तो एंड्रॉइड कॉल पर ReceivedError() क्यों कॉल करता है? – mhenry

0

चूंकि वेबव्यू ब्राउज़र की तरह काम करता है तो उत्तर नहीं है। उस स्थिति का पता लगाने के लिए कुछ हैकी तरीके हैं।

या कोई वैकल्पिक समाधान (WebView दस्तावेज़ देखें)

संबंधित मुद्दे