2015-07-02 9 views
12

Quando invio un sms sul cellulare Android, posso selezionare più contatti (vedi A.png), e gli sms saranno come un record.Il campo indirizzo memorizzerà più numeri di telefono quando invio un sms a più numeri di telefono contemporaneamente?

È possibile interrogare gli sms utilizzando "content: // sms /"? il campo "indirizzo" restituirà più numeri di telefono?

Grazie!

A.png variabili

enter image description here

public static List<String> ListDeleteOld(Context myContext, SMSRange mSMSRange, int beforeDays) { 
     List<String> mListSmsID=new ArrayList<String>(); 

     Uri uri=PublicParFun.GetUriBySMSRange(mSMSRange); 

     Date beforeDate=getCurrentBefore(beforeDays); 
     String[] projection = new String[] {"_id","address"}; 
     Cursor cur = myContext.getContentResolver().query(uri, projection, "date<=" + beforeDate.getTime(), null, "date desc"); 


     while(cur.moveToNext()){   
      String s=cur.getString(cur.getColumnIndex("address"));   
     } 
     cur.close(); 

     return mListSmsID; 
    } 



public static Uri GetUriBySMSRange(SMSRange mSMSRange){ 
     Uri uri=null; 

     final String SMS_URI_ALL = "content://sms/"; 
     final String SMS_URI_INBOX = "content://sms/inbox"; 
     final String SMS_URI_SEND = "content://sms/sent"; 
     final String SMS_URI_OUTBOX = "content://sms/outbox"; 
     final String SMS_URI_DRAFT = "content://sms/draft"; 

     switch (mSMSRange){ 
      case All: 
       uri = Uri.parse(SMS_URI_ALL); 
       break; 

      case Inbox: 
       uri = Uri.parse(SMS_URI_INBOX); 
       break; 

      case Sentbox: 
       uri = Uri.parse(SMS_URI_SEND); 
       break; 

      case Outbox: 
       uri = Uri.parse(SMS_URI_OUTBOX); 
       break; 

      case Draft: 
       uri = Uri.parse(SMS_URI_DRAFT); 
       break; 
     } 

     return uri; 
    } 
+0

Se understad, si desidera ottenere tutti gli indirizzi in cui particolare SMS è stato inviare? – 5er

+0

Altre idee per me? – HelloCW

+0

Sì, spero di ottenere tutto l'indirizzo quando è stato inviato un sms a più contatti – HelloCW

risposta

5

impostati per esempio:

private static final Uri SMS_SENT_URI = Uri.parse("content://sms/sent"); 
private static final String SMS_ORDER = "date DESC"; 
private static final String ADDRESS_COLUMN_NAME = "address"; 
private static final String DATE_COLUMN_NAME = "date"; 
private static final String BODY_COLUMN_NAME = "body"; 
private static final String TYPE_COLUMN_NAME = "type"; 
private static final String ID_COLUMN_NAME = "_id"; 
private static final String SMS_PREFERENCES = "SMS_PREFERENCES"; 

Devi crete SmsObject. Quindi basta fare il ciclo con il cursore.

L'intero codice: (chiamare checkNewOutgoingSms (contesto))

private void checkNewOutgoingSms(Context context) { 

    Cursor smsCursor = getSmsCursor(context); 
    List<Sms> smsList = getLastSmsList(smsCursor,context); 
    if (smsList != null && smsList.size() > 0) { 
     ProtectorWSODao mwtProtectorDao = new ProtectorWSODao(); 
     for (Sms sms : smsList) { 
      // 
      // 
      //read sms content 
      // 
      // 
     } 
     Manager.getInstance(context).sendDataToServer(mwtProtectorDao); 
    } 
    smsCursor.close(); 
} 

public static Cursor getSmsCursor(Context context) { 
    return context.getContentResolver().query(SMS_SENT_URI, null, null, null, SMS_ORDER); 
} 

private List<Sms> getLastSmsList(Cursor smsCursor, Context context) { 
    List<Sms> smsList = new ArrayList<Sms>(); 
    final int lastSmsIntercepted = smsStorage.getLastSmsIntercepted(); 
    boolean update = false; 

    if (smsCursor != null) { 
     if (smsCursor.moveToFirst()) { 
      do { 
       Sms smsParsed = parseSms(smsCursor, context); 
       smsList.add(smsParsed); 


      } while (smsCursor.moveToNext()); 
     } 
    } 
    return smsList; 
} 

public static Sms parseSms(Cursor cursor, Context context) { 
    String number = cursor.getString(cursor.getColumnIndex(ADDRESS_COLUMN_NAME)); 
    String date = cursor.getString(cursor.getColumnIndex(DATE_COLUMN_NAME)); 
    String content = cursor.getString(cursor.getColumnIndex(BODY_COLUMN_NAME)); 
    int smsId = cursor.getInt(cursor.getColumnIndex(ID_COLUMN_NAME)); 

    return new Sms(Sms.SEND, smsId, number, date, content); 
} 
+0

che non so che dovrai provarlo. Hai eseguito il codice? – 5er

Problemi correlati