2013-01-18 58 views
9

मैं Loading Bitmaps effecientlyएंड्रॉयड getExternalCacheDir() रिटर्न अशक्त

में वर्णित सर्वोत्तम प्रथाओं को लागू करने के कोशिश कर रहा हूँ मैं क्योंकि इस लाइन समस्या आई है:

Utils.getExternalCacheDir(context) 

के अंदर DiskLruCache.java लौटा रहा है शून्य, जिसका मतलब है कि मुझे NullPointerException मिलता है जब मैं कॉल करने का प्रयास करता हूं .getPath()

उत्तर

29

कुछ हद तक क्रिप्टिक NullPointerException के बावजूद वास्तविक मुद्दों को फेंक दिया गया है कि मेरी आवेदती पर WRITE_EXTERNAL अनुमति नहीं थी, इसलिए सिस्टम कैशिंग के लिए बाहरी डीआईआर का उपयोग करने के मेरे प्रयास को खारिज कर रहा था। दुर्भाग्यवश यह बिटमैप्स को प्रदर्शित करने में उपयोग किए गए कोड में कम पर्याप्त स्तर पर हो रहा था, यह धारणा है कि अपवाद SecurityException इंगित नहीं करता है क्योंकि यह सामान्य रूप से अगर कोई उचित अनुमति के बिना एसडी कार्ड में लिखने की कोशिश कर रहा होता तो यह सामान्य होता।

बस ठीक करने के लिए इस जोड़ें:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

अपने प्रकट करने के लिए।

+7

Android 4.4+ पर इस अनुमति नहीं रह गया है कैश उद्देश्य आप maxSdkVersion paremeter साथ इस अनुमति का उपयोग कर सकते हैं के लिए आवश्यक है: <-अनुमति का उपयोग करता एंड्रॉयड: नाम = "android.permission.WRITE_EXTERNAL_STORAGE" एंड्रॉयड: maxSdkVersion = "18" /> – Climbatize

+5

और कुछ लॉलीपॉप बनाता है यह टूटा हुआ है, इसलिए मैं अधिकतम एसडीके को हटाने का सुझाव देता हूं ... मूर्खतापूर्ण मुझे पता है –

+1

@ मेरे ऐप ने स्पष्ट किया है कि एसडीके संस्करण 1 9 और 22 के लिए एक ही दुर्घटना की सूचना मिली है। – DroidHeaven

7

यह तब भी हो सकता है जब आप बिना किसी बाहरी स्टोरेज के डिवाइस या एमुलेटर पर चल रहे हों।

+0

कम से कम यह उपयोगकर्ता के बाजार पर ऐसे उपकरणों का प्रचार करने के लिए लाभदायक है –

+0

मेरा जवाब बदल गया, बाहरी स्टोरेज के बिना एंड्रॉइड डिवाइस दुर्लभ नहीं हैं। डिवाइस के बाहरी भंडारण होने पर भी हो सकता है, लेकिन कार्ड मौजूद नहीं है या अनमाउंट नहीं है। –

+0

मुझे यह त्रुटि जेनरेशन एमुलेटर पर मिल रही है। – agamov

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

  • कोई संबंधित समस्या नहीं^_^