Как отличить групповые сообщения при получении смс / ммс с устройства?
В моем приложении я хочу получить смс / ммс с устройства и отобразить сообщения в listview. Используя следующий код, чтобы получить все смс с устройства.
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();
}
Используя этот метод, я получаю все смс с устройства. Но мой вопрос заключается в том, как различить групповое сообщение. В групповом сообщении одно сообщение отправлено с разными контактными номерами (отправителями). Так что в обычном сообщении групповое сообщение приложения отображается в отдельном столбце и отображается одно сообщение. в отдельном столбце. Так что мое приложение также должно отображать сообщения, такие как приложение сообщений. Так что в этом курсоре, как идентифицировать групповое сообщение? Есть ли какой-либо столбец для идентификации группового сообщения? Поэтому, пожалуйста, предложите мне, как это сделать. Спасибо Авансовые.....
1 ответ
Столбец потока THREAD_ID даст вам все сообщения в одном разговоре. Затем вы можете использовать адресный столбец, чтобы различать отправителей сообщений в групповом сообщении. Вам также следует использовать класс телефонии, который был представлен в API 19, вместо преобразователя контента. https://developer.android.com/reference/android/provider/Telephony.html