前言

首先,这个问题有点神奇。

比如,出现问题的原因:

new.SQLiteOpenHelper()时,Context不能是Application的Context如果传入Application,会java.io.File android.content.Context.getDatabasePath(java.lang.String)’ on a null object reference

但是,我项目中另一个系统APP一直传入的是Application的Context,也没有出现啥问题。

不过,按照上面的修改,运行后确实没有啥问题。

记录一下,方便自己查阅。

好记性不如烂笔头

正文

  1. mDBHelper = new DBHelper(MyApp.getContext(), "staff.db");
复制

改为

  1. mDBHelper = new DBHelper(getContext(), "staff.db");
复制

就可以解决这个问题。

下面是异常的日志的打印:

  1. AndroidRuntime(24820): FATAL EXCEPTION: main
  2. AndroidRuntime(24820): Process: com.la.providertwo, PID: 24820
  3. AndroidRuntime(24820): java.lang.RuntimeException: Unable to get provider com.la.content.StatusProvider: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File android.content.Context.getDatabasePath(java.lang.String)' on a null object reference
  4. AndroidRuntime(24820): at android.app.ActivityThread.installProvider(ActivityThread.java:6396)
  5. AndroidRuntime(24820): at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938)
  6. AndroidRuntime(24820): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853)
  7. AndroidRuntime(24820): at android.app.ActivityThread.access$1100(ActivityThread.java:199)
  8. AndroidRuntime(24820): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650)
  9. AndroidRuntime(24820): at android.os.Handler.dispatchMessage(Handler.java:106)
  10. AndroidRuntime(24820): at android.os.Looper.loop(Looper.java:193)
  11. AndroidRuntime(24820): at android.app.ActivityThread.main(ActivityThread.java:6669)
  12. AndroidRuntime(24820): at java.lang.reflect.Method.invoke(Native Method)
  13. AndroidRuntime(24820): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
  14. AndroidRuntime(24820): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:892)
  15. AndroidRuntime(24820): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File android.content.Context.getDatabasePath(java.lang.String)' on a null object reference
  16. AndroidRuntime(24820): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:352)
  17. AndroidRuntime(24820): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298)
  18. AndroidRuntime(24820): at com.la.content.StatusProvider.onCreate(StatusProvider.java:36)
  19. AndroidRuntime(24820): at android.content.ContentProvider.attachInfo(ContentProvider.java:1917)
  20. AndroidRuntime(24820): at android.content.ContentProvider.attachInfo(ContentProvider.java:1892)
  21. AndroidRuntime(24820): at android.app.ActivityThread.installProvider(ActivityThread.java:6391)
  22. AndroidRuntime(24820): ... 10 more
  23. ActivityManager( 2419): Force finishing activity com.la.providertwo/.MainActivity
复制

参考文章

  1. getWritableDb失败——java.io.File android.content.Context.getDatabasePath(java.lang.String)’

相关文章

暂无评论

none
暂无评论...