GetSMS

public ist<SMSModelsDto> getSMS() {
    Uri uriSMSURI = Uri.parse("content://sms/");
    ContentResolver cr = getContentResolver();
    c = cr.query(uriSMSURI, null, null, null, null);
    startManagingCursor(c);
    if (c.moveToFirst()) {
        for (int i = 0; i < c.getCount(); i++) {
            String header = c.getString(c.getColumnIndexOrThrow("address"));
            if (stringSMSModelsDtoHashMap.containsKey(header)) {
                smsModelsDto = stringSMSModelsDtoHashMap.get(header);
                smsModelsDto.setRepeatCount(smsModelsDto.getRepeatCount() + 1);
                stringSMSModelsDtoHashMap.put(header, smsModelsDto);
            } else {
                smsModelsDto = new SMSModelsDto();
                smsModelsDto.setId(c.getString(c.getColumnIndexOrThrow("_id")));
                String threadId = null;
                threadId = c.getString(c.getColumnIndexOrThrow("thread_id"));;
                if(threadId != null){
                    smsModelsDto.setThreadId(threadId);
                }
                smsModelsDto.setHeader(header);
                smsModelsDto.setName(header);
                smsModelsDto.setBody(c.getString(c.getColumnIndexOrThrow("body")));
                smsModelsDto.setRead(Byte.parseByte(c.getString(c.getColumnIndex("read"))));
                smsModelsDto.setDate(Long.parseLong(c.getString(c.getColumnIndexOrThrow("date"))));
                if (c.getString(c.getColumnIndexOrThrow("type")).contains("1")) {
                    smsModelsDto.setType((byte) 1);
                } else {
                    smsModelsDto.setType((byte) 0);
                }
                stringSMSModelsDtoHashMap.put(header, smsModelsDto);
            }
            if (sms.contains(smsModelsDto)) {
                sms.set(sms.indexOf(smsModelsDto), smsModelsDto);
            } else {
                sms.add(smsModelsDto);
            }
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    adapter.notifyDataSetChanged();
                }
            });
            c.moveToNext();
        }
        if (PermissionCheck.readAndWriteContacts(HomeActivity.this)) {
            loadContactsData();
        }
    }
    return sms;

}

public class SMSModelsDto{

    private String id;
    private String threadId;
    private String header;
    private String body;
    private long date;
    private String name;

    private String image;

    private byte type;
    private byte read;

    private int repeatCount = 1;

    private boolean supportReply = false;

    public String getThreadId() {
        return threadId;
    }

    public void setThreadId(String threadId) {
        this.threadId = threadId;
    }

    public boolean isSupportReply() {
        return supportReply;
    }

    public void setSupportReply(boolean supportReply) {
        this.supportReply = supportReply;
    }

    public String getHeader(){
        return header;
    }

    public void setHeader(String header){
        this.header = header;
    }

    public String getBody(){
        return body;
    }

    public void setBody(String body){
        this.body = body;
    }

    public long getDate() {
        return date;
    }

    public void setDate(long date) {
        this.date = date;
    }

    public byte getType(){
        return type;
    }

    public void setType(byte type){
        this.type = type;
    }

    public String getId(){
        return id;
    }

    public void setId(String id){
        this.id = id;
    }

    public byte getRead(){
        return read;
    }

    public void setRead(byte read){
        this.read = read;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public int getRepeatCount(){
        return repeatCount;
    }

    public void setRepeatCount(int repeatCount){
        this.repeatCount = repeatCount;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString(){
        return "SMSModelsDto{" +
                "id='" + id + '\'' +
                ", header='" + header + '\'' +
                ", body='" + body + '\'' +
                ", date='" + date + '\'' +
                ", image=" + image +
                ", type=" + type +
                ", read=" + read +
                '}';
    }
}