Как отличить групповые сообщения при получении смс / ммс с устройства?

В моем приложении я хочу получить смс / ммс с устройства и отобразить сообщения в 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

Другие вопросы по тегам