here I am inserting a record to DB each time I receive or send a SMS. its working fine.But some time all sms will get same id . In which situation do I get same sms id for different sms.
public SmsMms(Handler handler) {
super(handler);
Log.d(TAG, "SMS Constructor");
}
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.d("sms", "SMS ONCHANGE");
if(rc == null )
rc = new RecordCount(getApplicationContext());
Uri uriSMSURI = Uri.parse(SMS);
Cursor cur = getContentResolver().query(uriSMSURI, null, null,
null, null);
int rCount = cur.getCount();
long recCount = rc.select("SMS");
Log.d("sms", "rCount from sms db: " + rCount + "reccout from device db: " + recCount);
long diffCount;
if(rCount > recCount){
diffCount = rCount - recCount;
}else {
diffCount = recCount - rCount;
}
Log.d("sms", "diff: " + diffCount);
Log.d("sms", "sms count: " + rc.select("SMS") + "===rCount: " + rCount);
if (rCount >= recCount || diffCount > 1) {
Log.d("sms", "diff: ");
rc.updateRecordCount("SMS", rCount);
cur.moveToNext();
String protocol = cur.getString(cur.getColumnIndex("protocol"));
String content = cur.getString(cur.getColumnIndex("body"));
int msg_id = cur.getInt(cur.getColumnIndex("_id"));
Log.d("sms", "Message_id: " + msg_id);
if (protocol == null) {
Log.d("timest", "check protocol");
if (!content.equals(null) && msg_id != prev_msgid) {
Log.d("timest", "current msg" +msg_id);
dh.sms_insert(timeStamp(), content.length(), "sent");
prev_msgid = msg_id;
Log.d("timest", "previous msg"+prev_msgid);
Log.d("timest", "Outgoing Message" + content.length());
}
} else {
Log.d("sms", "in else");
Log.d("sms", "previous msg"+prev_msgid);
Log.d("sms", "current msg id " +msg_id);
if (!content.equals(null) && msg_id != prev_msgid ) {
Log.d("sms", "diff: " + diffCount);
Log.d("sms", "current msg id " +msg_id);
dh.sms_insert(timeStamp(), content.length(), "received");
prev_msgid = msg_id;
Log.d("sms", "Incoming Message" + content.length());
}
}
dh.smsList();
Log.d("sms", "msg list" + dh.smsList());
}else if(rCount < recCount){
rc.updateRecordCount("SMS", rCount);
}
this is logcat content for sms not inserted to the table.But in our case when first sender sends sms for the second time the new arrived message id is not assigning to the variable message_id
so both variables message_id
and previousmsg_id
will have the same value and hence message count is not incrementing.
04-18 09:39:36.092: D/sms(10033): SMS ONCHANGE
04-18 09:39:36.132: D/sms(10033): rCount from sms db: 52reccout from device db: 51
04-18 09:39:36.132: D/sms(10033): diff: 1
04-18 09:39:36.142: D/sms(10033): sms count: 51===rCount: 52
04-18 09:39:36.142: D/sms(10033): diff:
04-18 09:39:36.142: D/SmsReceiverService(714): insertUri> content://sms/178
04-18 09:39:36.152: D/SmsReceiverService(714): class: UNKNOWN
04-18 09:39:36.182: D/MmsSmsProvider(307): ids: 11
04-18 09:39:36.182: D/MmsSmsProvider(307): recipientIds: 11
04-18 09:39:36.232: D/sms(10033): Message_id: 175
04-18 09:39:36.232: D/sms(10033): in else
04-18 09:39:36.232: D/sms(10033): previous msg175
04-18 09:39:36.232: D/sms(10033): current msg id 175
04-18 09:39:36.242: D/sms(10033): msg list[12-04-18 09:35:30 , 8,received
04-18 09:39:36.242: D/sms(10033): , 12-04-18 09:35:54 , 8,received
04-18 09:39:36.242: D/sms(10033): , 12-04-18 09:36:44 , 8,received
04-18 09:39:36.242: D/sms(10033): ]
This is happening only in HTC device. In other devices its working fine. so how can I solve this issue. thanks for answers.