Android 如何在从设备获取sms/mms时区分组消息?
在我的应用程序中,我想从设备中获取sms/mms并在listview中显示消息。通过使用以下代码从设备中获取所有smsAndroid 如何在从设备获取sms/mms时区分组消息?,android,cursor,messages,Android,Cursor,Messages,在我的应用程序中,我想从设备中获取sms/mms并在listview中显示消息。通过使用以下代码从设备中获取所有sms public void readSmsFromDevice() { preferences = PreferenceManager .getDefaultSharedPreferences(BackgroundService.this); final_msg_time = preferences.getLong("msgtime", 0
public void readSmsFromDevice() {
preferences = PreferenceManager
.getDefaultSharedPreferences(BackgroundService.this);
final_msg_time = preferences.getLong("msgtime", 0);
Uri uriSMSURI = Uri.parse("content://sms/");
String[] projection = { "address", "body", "date", "type" };
String where = "date" + ">" + final_msg_time;
Cursor cur = getContentResolver().query(uriSMSURI, projection, where,null, "date");
while (cur.moveToNext()) {
if(ProfileFragment.stop)
{
break;
}else{
try {
//
Message mess1=new Message();
try{
String _id = cur.getString(cur.getColumnIndex("_id"));
mess1.setId(_id);
}catch(Exception e)
{
mess1.setId("null");
}
try{
String number = cur.getString(cur.getColumnIndex("address"));
number = number.replaceAll("[\\W]", "");
if (number.trim().length() > 10) {
mess1.setNumber(number.substring(number.length() - 10,
number.length()));
mess1.setAddress(number.substring(number.length() - 10,
number.length()));
} else {
mess1.setNumber(number);
mess1.setAddress(number);
}
}
catch(Exception e){}
mess1.setBody(cur.getString(cur.getColumnIndex("body")));
String type = cur.getString(cur.getColumnIndex("type"));
Long millisecond = Long.parseLong(cur.getString(cur
.getColumnIndex("date")));
String dateString = DateFormat.format("yyyy/MM/dd hh:mm:ss a",
new Date(millisecond)).toString();
mess1.setDate_millis(millisecond);
mess1.setDate(dateString);
mess1.setType(type);
mess1.setmessagetype("sms");
messages.add(mess1);
} catch (Exception e) {}
}
}
cur.close();
}
通过使用此方法,我可以从设备获取所有短信。但我的问题是如何区分组消息。在组消息中,一条消息发送给不同的联系人号码发件人。因此,在普通消息应用程序中,组消息显示在单独的列中,单个消息显示在单独的列中。因此,我的应用程序还必须显示像消息应用程序这样的消息。那么在这个游标中如何识别组消息?是否有任何列可用于识别组消息?因此请建议我如何进行此操作。提前感谢….线程ID列将在同一对话中为您提供所有消息。然后,您可以使用“地址”列来区分组消息中消息的发件人。 您还应该使用API 19中引入的电话类,而不是内容解析器