SMS Messages of a particular number not showing up on other devices Android

后端 未结 2 1857
臣服心动
臣服心动 2020-12-22 13:19

I am using the Telephony.Sms library to load in received and sent sms messages for the app I am working on. When I set the query selection to null (the third item in the que

2条回答
  •  不思量自难忘°
    2020-12-22 13:53

    This is the full code solution of being able to obtain the Sent/Received SMS messages on various android devices. This has been tested on API level 22, 23, 26 and 28 on different android devices including Huawei, Oppo and Samsung.

    public void getAllSms(Context context)
    {
        HashSet phoneSet = new HashSet<>();
        phoneSet.add(SelectedPhNo);  // phoneNumber
        long threadId = Telephony.Threads.getOrCreateThreadId(context, phoneSet);
        Uri threadUri = ContentUris.withAppendedId(Telephony.Threads.CONTENT_URI, threadId);
    
        String[] projection = new String[] {Telephony.MmsSms.TYPE_DISCRIMINATOR_COLUMN, BaseColumns._ID, Telephony.Sms.Conversations.THREAD_ID,
                Telephony.Sms.ADDRESS, Telephony.Sms.BODY, "sort_index", Telephony.Sms.DATE_SENT, Telephony.Sms.DATE,
                Telephony.Sms.READ, Telephony.Sms.TYPE, Telephony.Sms.STATUS, Telephony.Sms.LOCKED,
                Telephony.Sms.ERROR_CODE, Telephony.Sms.SEEN, Telephony.Sms.Inbox.BODY, Telephony.Sms.Sent.BODY};
    
        Cursor cur = context.getContentResolver().query(threadUri, projection, null, null, "normalized_date desc"); 
        DatabaseUtils.dumpCursor(cur);
    
        // Read cursor into an arraylist
        ArrayList mArrayList = new ArrayList();
    
        int totalSms = cur.getCount();
    
        if(cur.moveToFirst())
        {
             for(int i = 0; i < totalSms; i++)
             {
                  String body = cur.getString(cur.getColumnIndex(Telephony.Sms.BODY));
                  String indexDate = cur.getString(cur.getColumnIndex(Telephony.Sms.DATE));
    
                  // Convert string to long variable
                  Long date = Long.parseLong(indexDate);
    
                  // Convert millis value to proper format
                  Date dateVal = new Date(date);
    
                  //"dd-MMM-yyyy""dd/MM/yyyy"
                  SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss  dd-MM-yyyy");
                  dateText = format.format(dateVal);
    
                  cur.moveToNext();
    
                  inboxArrayAdapter.add("Command: " + body + "\n" + "Date: " + dateText);
             }
        }
    }
    

提交回复
热议问题