Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在从设备获取sms/mms时区分组消息?_Android_Cursor_Messages - Fatal编程技术网

Android 如何在从设备获取sms/mms时区分组消息?

Android 如何在从设备获取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

在我的应用程序中,我想从设备中获取sms/mms并在listview中显示消息。通过使用以下代码从设备中获取所有sms

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中引入的电话类,而不是内容解析器