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

作成日 2014年06月20日  ·  3コメント  ·  ソース: nostra13/Android-Universal-Image-Loader

こんにちは。 ユーザーからエラー ログを受け取りました。

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

デバイスの仕様:
モデル SCH-I545
アンドロイド 4.2.2

マイライン №97

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

最も参考になるコメント

ユーザー (デバイス: Samsung GT-I9300、Android 4.3)、UIL v 1.9.1 からも同様の報告があります。
スタックトレースの最も興味深い部分:

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)

GrepCode
66行目からStorageManager#getPrimaryVolume()が null を返す場合、NPE が発生する可能性があるようです。
ダーティな回避策は、NPE をキャッチし、それがスローされた場合に外部ストレージがマウントされていないと想定することです。

全てのコメント3件

こんにちは。 どの UIL バージョン?

ソースを使用しています。 cfd8fa982243への私のサブモジュール Android-Universal-Image-Loader リンク

ユーザー (デバイス: Samsung GT-I9300、Android 4.3)、UIL v 1.9.1 からも同様の報告があります。
スタックトレースの最も興味深い部分:

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)

GrepCode
66行目からStorageManager#getPrimaryVolume()が null を返す場合、NPE が発生する可能性があるようです。
ダーティな回避策は、NPE をキャッチし、それがスローされた場合に外部ストレージがマウントされていないと想定することです。

このページは役に立ちましたか?
0 / 5 - 0 評価