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

Créé le 20 juin 2014  ·  3Commentaires  ·  Source: nostra13/Android-Universal-Image-Loader

Salut. J'ai reçu un journal d'erreurs de mon utilisateur.

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

Spécifications de l'appareil :
Modèle SCH-I545
Android 4.2.2

Ma ligne №97

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

Commentaire le plus utile

J'ai un rapport similaire de l'utilisateur (Appareil : Samsung GT-I9300, Android 4.3), UIL v 1.9.1.
Partie la plus intéressante d'un 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)

J'ai creusé dans les sources de Environment.getExternalStorageState sur GrepCode
On dirait qu'il peut produire NPE si Exception est levée dans les lignes 66-69 ou StorageManager#getPrimaryVolume() renvoie null.
La solution de contournement consiste à intercepter NPE et à supposer que le stockage externe n'est pas monté s'il est levé.

Tous les 3 commentaires

Salut. Quelle version de l'UIL ?

J'utilise des sources. Mon lien sous-module Android-Universal-Image-Loader vers cfd8fa982243

J'ai un rapport similaire de l'utilisateur (Appareil : Samsung GT-I9300, Android 4.3), UIL v 1.9.1.
Partie la plus intéressante d'un 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)

J'ai creusé dans les sources de Environment.getExternalStorageState sur GrepCode
On dirait qu'il peut produire NPE si Exception est levée dans les lignes 66-69 ou StorageManager#getPrimaryVolume() renvoie null.
La solution de contournement consiste à intercepter NPE et à supposer que le stockage externe n'est pas monté s'il est levé.

Cette page vous a été utile?
0 / 5 - 0 notes