2011-07-29 22 views
0

我無法從我的broadcast receiver訪問我的SQlite數據庫。它甚至有可能嗎?我不斷收到NullPointerException。在onReceive of the BroadcastReceiver我打電話從廣播接收器訪問數據庫?

mDbHelper = new ResponderDbAdapter(context); 

mDbHelper.open(); 

是否與上下文有關?我想將我在MainActivity中設置的數據庫信息拖入BroadCast Receiver

想法?

編輯:

ERROR: 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772): FATAL EXCEPTION: main 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772): java.lang.RuntimeException: Unable to start receiver com.test.example.feed.receiver.RecieveSMS: java.lang.NullPointerException 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at android.app.ActivityThread.access$2400(ActivityThread.java:117) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at android.os.Looper.loop(Looper.java:130) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at android.app.ActivityThread.main(ActivityThread.java:3684) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:845) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at dalvik.system.NativeStart.main(Native Method) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772): Caused by: java.lang.NullPointerException 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at com.test.example.feed.receiver.RecieveSMS.onReceive(RecieveSMS.java:67) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  at android.app.ActivityThread.handleReceiver(ActivityThread.java:1794) 
07-29 16:43:46.491: ERROR/AndroidRuntime(6772):  ... 10 more 

編輯:更好的解釋

我有一個單獨的活動,允許用戶將項目添加到數據庫中。我想與接收者分享這些信息,以便廣播接收者知道數據庫中有哪些項目。 ResponderDbAdapter是一個訪問Db並執行提取和插入到DB的類。上下文會是什麼......如果我的廣播接收器即使在應用程序關閉時也能運行,它如何訪問數據庫?

+0

是的,這可能(我在我的應用程序中這樣做),但是您需要發佈一些更多的代碼或至少是堆棧跟蹤。 – Jason

+0

你能解釋一下你是如何做到的嗎?我已經添加了堆棧跟蹤 –

+0

您需要確保您使用的是正確的上下文。在您有機會訪問您的數據庫之前,廣播接收器也可能會終止。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

回答

0

上下文的廣播接收器版本可能不適用於DBHelper。讓Receiver啓動一項服務並讓服務訪問DB