携帯電話からの発信SMSメッセージの数をカウントするアプリケーションを作成しようとしています。現在、私は次のコードを持っている:私は1つのページの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回呼び出されます。 2ページのSMSメッセージを送信すると、onChange
が4回呼び出されます。 3ページのメッセージ、5回と呼ばれる。等々。
注: "content:// sms/sent"などのUri.parse("content://sms")
の他のバリエーションを試しましたが、 "content:// sms"以外は何も呼び出されていません。onChange
が呼び出されました。
送信SMSメッセージを一意に識別し、送信されたSMSメッセージの数を正確に取得するにはどうすればよいですか?
実際には非常に簡単な解決策が見つかりました。ちょうどwhileループを作成し、どこの日付> = someTimeをクエリします。 –