Android-universal-image-loader: java.lang.NullPointerException in StorageUtils.getCacheDirectory

Created on 20 Jun 2014  ·  3Comments  ·  Source: nostra13/Android-Universal-Image-Loader

Hello. I received an error log from my user.

java.lang.RuntimeException: Unable to create application my.CustomApplication: java.lang.NullPointerException
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4584)
at android.app.ActivityThread.access$1600(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1325)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException
at android.os.Environment.getStorageState(Environment.java:715)
at android.os.Environment.getExternalStorageState(Environment.java:690)
at com.nostra13.universalimageloader.utils.getCacheDirectory(SourceFile:68)
at my.CustomApplication.onCreate(SourceFile:97)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1025)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4581)
... 10 more

Device specifications:
Model SCH-I545
Android 4.2.2

My line №97

File cacheDir = StorageUtils.getCacheDirectory(getApplicationContext());
Bug

Most helpful comment

I have similar report from user (Device: Samsung GT-I9300, Android 4.3), UIL v 1.9.1.
Most interesting part of a stacktrace:

at android.os.Environment.getExternalStorageState(Environment.java:598)
at com.nostra13.universalimageloader.utils.StorageUtils.java.io.File getCacheDirectory(android.content.Context,boolean)(SourceFile:68)
at com.nostra13.universalimageloader.core.ImageLoaderConfiguration$Builder.com.nostra13.universalimageloader.core.ImageLoaderConfiguration build()(SourceFile:545)

I dug into sources of Environment.getExternalStorageState on GrepCode
Looks like it can produce NPE if Exception is thrown in lines 66-69 or StorageManager#getPrimaryVolume() returns null.
The dirty workaround is to catch NPE and assume that external storage is not mounted if it is thrown.

All 3 comments

Hello. Which UIL version?

I am using sources. My submodule Android-Universal-Image-Loader link to cfd8fa982243

I have similar report from user (Device: Samsung GT-I9300, Android 4.3), UIL v 1.9.1.
Most interesting part of a stacktrace:

at android.os.Environment.getExternalStorageState(Environment.java:598)
at com.nostra13.universalimageloader.utils.StorageUtils.java.io.File getCacheDirectory(android.content.Context,boolean)(SourceFile:68)
at com.nostra13.universalimageloader.core.ImageLoaderConfiguration$Builder.com.nostra13.universalimageloader.core.ImageLoaderConfiguration build()(SourceFile:545)

I dug into sources of Environment.getExternalStorageState on GrepCode
Looks like it can produce NPE if Exception is thrown in lines 66-69 or StorageManager#getPrimaryVolume() returns null.
The dirty workaround is to catch NPE and assume that external storage is not mounted if it is thrown.

Was this page helpful?
0 / 5 - 0 ratings