1
我想建立自己的短信應用程序(只是爲了學習的目的)如何工作。現在,當我收到短信我保存它是這樣的:集團短信從相同的號碼
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String message = currentMessage.getDisplayMessageBody();
long time_rcv = currentMessage.getTimestampMillis();
ContentValues smsValues = new ContentValues();
smsValues.put("address", phoneNumber);
smsValues.put("body", message);
smsValues.put("date_sent", time_rcv);
context.getContentResolver().insert(BlacklistConstants.smsInboxUri,smsValues);
這個工程除了當我想要顯示的消息罰款:
來自同一號碼的人是分開顯示。
當我找回這樣的短信:
Uri uri = Uri.parse(String.valueOf(BlacklistConstants.smsConversations));
Cursor c = getActivity().getContentResolver().query(uri, null, null, null, null);
我得到的輸出:
msg count: 1
thread_id: 0
Snippet: 2
msg count: 1
thread_id: 0
Snippet: 2
msg count: 1
thread_id: 0
Snippet: 2
msg count: 1
thread_id: 0
Snippet: 2
消息,其中這樣的:
從100 從11 從12 從12
所以實際上我應該得到一個有2條消息。
有人可以指出我如何解決這個問題嗎?
編輯:
這是我得到的短信的。該displayConversations只是爲錯過:
// Fills the List with Smss
private void fillSmsList() {
smsList = new ArrayList<SMSData>();
Uri uri = Uri.parse(String.valueOf(BlacklistConstants.smsInboxUri));
Cursor c = getActivity().getContentResolver().query(uri, null, null, null, null);
if (c.moveToFirst()) {
for (int i = 0; i < c.getCount(); i++) {
SMSData sms = new SMSData();
sms.setBody(c.getString(c.getColumnIndexOrThrow("body")).toString());
sms.setNumber(c.getString(c.getColumnIndexOrThrow("address")).toString());
sms.setId(c.getString(c.getColumnIndexOrThrow("_id")).toString());
sms.setTimeStampReceived(c.getString(c.getColumnIndexOrThrow("date_sent")).toString());
smsList.add(sms);
c.moveToNext();
}
}
c.close();
}
private void displaySmsConversations() {
Log.d(TAG,"DisplaySmsConverstations");
Uri uri = Uri.parse(String.valueOf(BlacklistConstants.smsConversations));
Cursor c = getActivity().getContentResolver().query(uri, null, null, null, null);
if (c.moveToFirst()) {
for (int i = 0; i < c.getCount(); i++) {
Log.d(TAG,"msg count: " + c.getColumnIndexOrThrow("msg_count"));
Log.d(TAG,"thread_id: " + c.getColumnIndexOrThrow("thread_id"));
Log.d(TAG,"Snippet: " + c.getColumnIndexOrThrow("snippet"));
c.moveToNext();
}
}
c.close();
}
然後,我仍然看到消息爲開。我需要編輯我的查詢代碼才能獲取消息嗎?我不明白爲什麼你需要這個數組,如果你總是說現在的信息是0? – user1007522
@ user1007522插入到'BlacklistConstants.smsInboxUri'並從'BlacklistConstants.smsConversations'讀取正確嗎?我不確定。 – erakitin
我編輯了我的問題。在那裏你可以看到我如何填寫我的名單。我從收件箱中閱讀。但是我認爲,如果我已經有了一個帶有相同數字的短信對象,然後附加到它,它不適合檢查那裏。分辯? – user1007522