마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Receiver에서 SQLite 사용하는 방법 좀 알려주세요!

0 추천

SmsReceiver로 문자를 가로채서 SQLite에 넣고 거기서 특정단어를 찾으면 카운트 하는 어플을 만드려고 하는데

 

Receiver 클래스에 DbOpenHelper만 넣으면 에러가 나네요...

 

해결 방법이 있을까요??

 

아니면 다른 방법을 써야 하는 걸까요???

public class SmsReceiver extends BroadcastReceiver{
	DbOpenHelper mDbOpenHelper;
	String number, subject, smsdate;
	@Override
	public void onReceive(Context context, Intent intent){
		Bundle bundle = intent.getExtras();
		SmsMessage[] msgs = null;
		String str = "";
		mDbOpenHelper = new DbOpenHelper(context);
		if(bundle != null){
			Object[] pdus = (Object[])bundle.get("pdus");
			msgs = new SmsMessage[pdus.length];
			for (int i=0; i<msgs.length; i++){
				msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
				str += "SMS from " + msgs[i].getDisplayOriginatingAddress();
				str += " : ";
				str += msgs[i].getMessageBody().toString();
				str += "\n";
				SimpleDateFormat sdFormat = new SimpleDateFormat("HH : mm : ss");
				Date sDate = new Date(msgs[i].getTimestampMillis());
				number = msgs[i].getDisplayOriginatingAddress();
				subject = msgs[i].getMessageBody().toString();
				smsdate = sdFormat.format(sDate);
				mDbOpenHelper.insertColumn(number, subject, smsdate);
			}
		}
	}
}

 

익명사용자 님이 2013년 4월 15일 질문
2013년 4월 15일 수정

2개의 답변

0 추천
mDbOpenHelper 변수만 선언이 되어있습니다. 추가적인 정의를 해주셔야죠~
울라울라울랄라 (180 포인트) 님이 2013년 4월 15일 답변
댓글 감사합니다.
지금 제가 올린 코드에서는 빠져 있는데 테스트 한 소스는 정의 되어있습니다.
마찬가지로 같은 에러가 나구요..ㅠ
-정의 되어있는 소스로 수정 합니다.
0 추천
런타임 에러시라면, Logcat에 뭐라고 나오는지....
mg2000 (2,640 포인트) 님이 2013년 4월 16일 답변
04-16 13:39:44.283: E/AndroidRuntime(276): FATAL EXCEPTION: main
04-16 13:39:44.283: E/AndroidRuntime(276): java.lang.RuntimeException: Unable to start receiver com.example.smscount.msgreceiver.SmsReceiver: java.lang.NullPointerException
04-16 13:39:44.283: E/AndroidRuntime(276):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2821)
04-16 13:39:44.283: E/AndroidRuntime(276):     at android.app.ActivityThread.access$3200(ActivityThread.java:125)
04-16 13:39:44.283: E/AndroidRuntime(276):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
04-16 13:39:44.283: E/AndroidRuntime(276):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 13:39:44.283: E/AndroidRuntime(276):     at android.os.Looper.loop(Looper.java:123)
04-16 13:39:44.283: E/AndroidRuntime(276):     at android.app.ActivityThread.main(ActivityThread.java:4627)
04-16 13:39:44.283: E/AndroidRuntime(276):     at java.lang.reflect.Method.invokeNative(Native Method)
04-16 13:39:44.283: E/AndroidRuntime(276):     at java.lang.reflect.Method.invoke(Method.java:521)
04-16 13:39:44.283: E/AndroidRuntime(276):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-16 13:39:44.283: E/AndroidRuntime(276):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-16 13:39:44.283: E/AndroidRuntime(276):     at dalvik.system.NativeStart.main(Native Method)
04-16 13:39:44.283: E/AndroidRuntime(276): Caused by: java.lang.NullPointerException
04-16 13:39:44.283: E/AndroidRuntime(276):     at com.example.smscount.database.DbOpenHelper.insertColumn(DbOpenHelper.java:59)
04-16 13:39:44.283: E/AndroidRuntime(276):     at com.example.smscount.msgreceiver.SmsReceiver.onReceive(SmsReceiver.java:41)
04-16 13:39:44.283: E/AndroidRuntime(276):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)
04-16 13:39:44.283: E/AndroidRuntime(276):     ... 10 more

에러 코드입니다..ㅠ

확인 한번 해주세요..
DbOpenHelper.java 59번째 줄에서 NullPointerException이 발생한다고 하는군요.

해당 코드는 올라와있지 않은데, 한번 그 부분을 확인해 보세요.
...