전화에서 발신 SMS 메시지 수를 계산하는 응용 프로그램을 만들려고합니다. 현재 나는 다음과 같은 코드를 가지고 : 나는 한 페이지 SMS 메시지를 보낼 때Android : 발신 SMS 수신 번호가 잘못되었습니다.
private void listenForSMS(){
Log.v("SMSTEST", "STARTED LISTENING FOR SMS OUTGOING");
Handler handle = new Handler(){};
SMSObserver myObserver = new SMSObserver(handle);
ContentResolver contentResolver = getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms"),true, myObserver);
}
private class SMSObserver extends ContentObserver{
int count = 0;
String lastMessage = null;
public SMSObserver(Handler handler) {
super(handler);
}
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.v("SMSTEST", "HIT ON CHANGE");
Uri uriSMSURI = Uri.parse("content://sms");
Cursor cur = getContentResolver().query(uriSMSURI, null, null,
null, null);
cur.moveToNext();
String protocol = cur.getString(cur.getColumnIndex("protocol"));
if(protocol == null){
count++;
Log.v("SMSTEST", "SMS SENT: count: " + count);
String content = cur.getString(cur.getColumnIndex("body"));
}else{
Log.v("SMSTEST", "SMS RECIEVED");
}
}
}
을 onChange
3 번이라고합니다. 두 페이지의 SMS 메시지를 보내면 onChange
이 4 번 호출됩니다. 3 페이지 메시지, 5 번 호출; 등등.
참고 : "content : // sms/sent"와 같은 Uri.parse("content://sms")
의 다른 변형을 시도했지만 "content : // sms"이외의 다른 문자는 onChange
이 호출되었습니다.
보내는 SMS 메시지를 고유하게 구분하고 보낸 SMS 메시지 수를 정확하게 계산하려면 어떻게해야합니까?
사실 아주 간단합니다. while 루프를 만들고 where date> = someTime을 쿼리하면됩니다. –