我想实现在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