因此,我有一個應用程序,它將文件存儲在用戶在距離地理位置一定距離內時創建的目錄中。除了某些通常使用SD卡的設備將其刪除,然後在用戶登錄時應用程序崩潰時,一切正常。除此之外,我嘗試使用droid x,並且能夠複製崩潰。當我有SD卡在它工作正常,但當SD卡被刪除時,我得到一個空指針異常並強制關閉。Android - 當沒有SD卡存在時強制關閉
繼承人從市場的原木堆:
java.lang.RuntimeException: Unable to resume activity {graffit.cores/graffit.cores.GraffView}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2208)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2228)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
at android.app.ActivityThread.access$1500(ActivityThread.java:124)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3806)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at graffit.cores.GraffView.onResume(GraffView.java:1201)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
at android.app.Activity.performResume(Activity.java:3882)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2191)
... 12 more
java.lang.NullPointerException
at graffit.cores.GraffView.onResume(GraffView.java:1201)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
at android.app.Activity.performResume(Activity.java:3882)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2191)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2228)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1721)
at android.app.ActivityThread.access$1500(ActivityThread.java:124)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3806)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
之處在於logdump了一些關於失敗的儀器即時猜測我應該趕上或找如果SD卡可用。
我確定我可以找出如何尋找一個SD卡,但我怎樣才能捕捉到這個崩潰並使用內部存儲來代替丟失的SD卡。
任何幫助將不勝感激。
嘿謝謝你的回覆。我實際上是在應用程序第一次運行時執行此操作。安裝完成後,用戶將刪除SD卡。當用戶在安裝後取出卡時,您是否有任何線索知道如何處理這種情況? – 2012-04-05 23:57:14
每次嘗試從卡上讀取之前都要進行此項檢查。我會編輯我的答案以更好地展示這一點。 – Wizetux 2012-04-05 23:58:42
還有一些廣播意圖告訴應用程序何時從系統卸載/安裝媒體(特別是ACTION_MEDIA_REMOVED)。在文檔中查看Intent類。您可以使用這些來了解媒體何時離開並返回系統。 – Wizetux 2012-04-06 00:03:51