Android getExternalCacheDir()返回null

Foa*_*Guy 9 android bitmap imageview android-sdcard

我正在尝试有效地实现加载位图中描述的最佳实践

我遇到了麻烦,因为这行:

Utils.getExternalCacheDir(context)
Run Code Online (Sandbox Code Playgroud)

DiskLruCache.java内部返回null,这意味着NullPointerException当我尝试调用.getPath()时

Foa*_*Guy 29

尽管有点神秘NullPointerException ,但实际问题是我的应用程序没有WRITE_EXTERNAL权限,所以系统拒绝我尝试使用ExternalDir进行缓存.不幸的是,在显示位图中使用的代码中,这种情况发生在足够低的水平,SecurityException如果没有经过适当的许可,异常并没有表明正常情况.

要修复,只需添加:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

到你的清单.

  • 在android 4.4+上,不再需要此权限用于缓存目的您可以将此权限与maxSdkVersion paremeter一起使用:<uses-permission android:name ="android.permission.WRITE_EXTERNAL_STORAGE"android:maxSdkVersion ="18"/> (7认同)
  • 在一些棒棒糖构建上,这已经破了,所以我建议删除max sdk ...傻我知道 (5认同)

Ant*_*pos 7

如果您在没有任何外部存储的设备或模拟器上运行,也会发生这种情况.