前言
首先,这个问题有点神奇。
比如,出现问题的原因:
new.SQLiteOpenHelper()时,Context不能是Application的Context如果传入Application,会java.io.File android.content.Context.getDatabasePath(java.lang.String)' on a null object reference
但是,我项目中另一个系统APP一直传入的是Application的Context,也没有出现啥问题。
不过,按照上面的修改,运行后确实没有啥问题。
记录一下,方便自己查阅。
好记性不如烂笔头
正文
把
mDBHelper = new DBHelper(MyApp.getContext(), "staff.db");
改为
mDBHelper = new DBHelper(getContext(), "staff.db");
就可以解决这个问题。
下面是异常的日志的打印:
AndroidRuntime(24820): FATAL EXCEPTION: main AndroidRuntime(24820): Process: com.la.providertwo, PID: 24820 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 AndroidRuntime(24820): at android.app.ActivityThread.installProvider(ActivityThread.java:6396) AndroidRuntime(24820): at android.app.ActivityThread.installContentProviders(ActivityThread.java:5938) AndroidRuntime(24820): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5853) AndroidRuntime(24820): at android.app.ActivityThread.access$1100(ActivityThread.java:199) AndroidRuntime(24820): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) AndroidRuntime(24820): at android.os.Handler.dispatchMessage(Handler.java:106) AndroidRuntime(24820): at android.os.Looper.loop(Looper.java:193) AndroidRuntime(24820): at android.app.ActivityThread.main(ActivityThread.java:6669) AndroidRuntime(24820): at java.lang.reflect.Method.invoke(Native Method) AndroidRuntime(24820): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) AndroidRuntime(24820): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:892) 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 AndroidRuntime(24820): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:352) AndroidRuntime(24820): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:298) AndroidRuntime(24820): at com.la.content.StatusProvider.onCreate(StatusProvider.java:36) AndroidRuntime(24820): at android.content.ContentProvider.attachInfo(ContentProvider.java:1917) AndroidRuntime(24820): at android.content.ContentProvider.attachInfo(ContentProvider.java:1892) AndroidRuntime(24820): at android.app.ActivityThread.installProvider(ActivityThread.java:6391) AndroidRuntime(24820): ... 10 more ActivityManager( 2419): Force finishing activity com.la.providertwo/.MainActivity
参考文章
历史上的今天
暂无评论...
随机推荐
adb启动service等
一:启动serviceadb shell am startservice com.125la.test/.myService二:启动Activityadb shell am start com.125la.test/.MainActivity还可以带参数,我在Android 9.0测试...
沈从文 : 独处
在我一个自传里,我曾经提到过水给我种种的印象。檐溜、小小的河流、汪洋万顷的大海,莫不对于我有过极大的帮助。我学会用小小脑子去思索一切,全亏得是水。我对于宇宙认识得深一点,也亏得是水。“孤独一点,在你缺少一切的时节,你就会发现,原来还有个你自己。”这是一句真话。我有我自己的生活与理想,可以说是...
许知远:窥探者的狂欢节
温斯顿要与一位美丽的姑娘相会,为此,他们必须坐上火车,到一个荒无人烟的野外,这里应该没有监视器,他和那姑娘可以有节制地表露自己的爱意和激情。他们每月如此相会一次,而且地点要经常更换,因为这个世界到处都有“老大哥”的电子眼睛。在乔治·奥威尔充满令人毛骨悚然的想象力的著作《1984》里,监视器是专制统...
[摘]Android 系统重启原因分析
重启原因分类1.上层造成重启system_server被杀watchdog重启重要线程阻塞2.kernel造成重启空指针非法地址3.kernel watchdog造成重启,原因不确定内存原因nand驱动log查看步骤及关键字1. 重启后的kernel.log或...
AccessibilityService使用
前言AccessibilityService是Android提供的无障碍服务,用于增强用户界面以帮助残障人士,或者可能暂时无法与设备充分交互的人们。今天就简单的记录一下AccessibilityService的使用。正文直入正题注册AccessibilityServiceA...
Android监听状态栏的显示与隐藏状态栏
前言在项目中有些需要监听SystemUI(状态栏)的显示和影藏。比如视频全屏和非全屏时,需要做一些布局的动态显示,虽然我们可以控制,但还是存在偶尔状态的失控,导致布局显示不对问题。以下内容参考《笔记3 | 通过onWindowAttributesChanged和onSystemUiVisib...