我想實現在Loading Bitmaps effeciently的Android getExternalCacheDir()返回null
描述的最佳做法我已經因爲這條線遇到麻煩:裏面的
Utils.getExternalCacheDir(context)
DiskLruCache.java正在恢復null,這意味着當我嘗試調用.getPath()時,我得到NullPointerException
()
我想實現在Loading Bitmaps effeciently的Android getExternalCacheDir()返回null
描述的最佳做法我已經因爲這條線遇到麻煩:裏面的
Utils.getExternalCacheDir(context)
DiskLruCache.java正在恢復null,這意味着當我嘗試調用.getPath()時,我得到NullPointerException
()
儘管有些隱晦的NullPointerException
被拋出,但實際問題是我的應用程序on沒有WRITE_EXTERNAL權限,所以系統拒絕我嘗試使用ExternalDir進行緩存。不幸的是,這種情況發生在用於有效顯示位圖的代碼中的級別足夠低,以至於異常並不表示SecurityException
,因爲它通常會在沒有正確許可的情況下嘗試寫入SD卡時發生。
要解決簡單地補充一點:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
到您的清單。
如果您在沒有任何外部存儲的設備或模擬器上運行,也會發生這種情況。
至少這在用戶市場上傳播這樣的設備是無利可圖的 –
改變了我的答案,沒有外部存儲的android設備並不那麼少見。如果設備具有外部存儲器,但卡不存在或未安裝,也可能發生。 –
我在Genymotion模擬器上遇到這個錯誤。 – agamov
在Android 4.4+此權限,不再需要高速緩存的目的 您可以使用此權限與maxSdkVersion paremeter: <使用許可權 機器人:名字= 「android.permission.WRITE_EXTERNAL_STORAGE」 機器人:maxSdkVersion =「18」/> – Climbatize
在一些棒棒糖構建這是壞的,所以我建議刪除最大sdk ...愚蠢我知道 –
@Climbatize我的應用程序報告了SDK版本19和22相同的崩潰。 – DroidHeaven