2009-09-11 9 views

Répondre

9

threadId devrait être l'id du SMS/MMS fil que vous voulez voir

Intent defineIntent = new Intent(Intent.ACTION_VIEW); 
defineIntent.setData(Uri.parse("content://mms-sms/conversations/"+threadId)); 
myActivity.startActivity(defineIntent); 

C'est la façon la plus simple que je trouve

+0

Comment puis-je obtenir l'identifiant de thread d'un sms? – Janusz

+0

Essayez de regarder la méthode findThreadIdFromAddress() ici: http://code.google.com/p/android-smspopup/source/browse/trunk/SMSPopup/src/net/everythingandroid/smspopup/SmsPopupUtils.java –

+0

@paul_sns Dead lien. – VickyS

2

Je l'ai trouvé hors de la source pour l'application de messagerie (lines 311-315), donc je suis sûr que cela fonctionnera, mais je n'ai aucune expérience avec elle.

// threadId should be the id of the sms/mms thread you want to view 
long threadId = 0; 
Intent i = new Intent("com.android.mms"); 
i.setData(
     Uri.withAppendedPath(
       i.getData(), Long.toString(threadId) 
     ) 
); 
i.setAction(Intent.ACTION_VIEW); 
+0

Je pense que 'ID de thread' est différent de 'sms id'? différents sms d'une même personne (chacun a son propre identifiant) peuvent avoir le même identifiant de thread. – n179911

4

Essayez cette

int req_thread_id; 

Uri mSmsinboxQueryUri = Uri.parse("content://sms")); 
Cursor cursor1 = getContentResolver().query(
         mSmsinboxQueryUri, 
         new String[] { "_id", "thread_id", "address", "person", "date", 
           "body", "type" }, null, null, null); 

startManagingCursor(cursor1); 
if (cursor1.getCount() > 0) 
{ 
while (cursor1.moveToNext()) 
{ 

int thread_id = cursor1.getInt(1); 
String address; = cursor1.getString(cursor1 
          .getColumnIndex(columns[0])); 
if("your desired no".equals(address) 
req_thread_id = thread_id; 
} 
} 
Intent defineIntent = new Intent(Intent.ACTION_VIEW); 
defineIntent.setData(Uri.parse("content://mms-sms/conversations/"+req_thread_id)); 
myActivity.startActivity(defineIntent); 
0

Cette L'extrait provient d'un commentaire de la réponse acceptée. Poster la méthode ici pour la postérité.

public static long findThreadIdFromAddress(Context context, String address) { 
    if (address == null) 
     return 0; 

    String THREAD_RECIPIENT_QUERY = "recipient"; 

    Uri.Builder uriBuilder = THREAD_ID_CONTENT_URI.buildUpon(); 
    uriBuilder.appendQueryParameter(THREAD_RECIPIENT_QUERY, address); 

    long threadId = 0; 

    Cursor cursor = null; 
    try { 

     cursor = context.getContentResolver().query(
       uriBuilder.build(), 
       new String[] { Contacts._ID }, 
       null, null, null); 

     if (cursor != null && cursor.moveToFirst()) { 
      threadId = cursor.getLong(0); 
     } 
    } finally { 
     if (cursor != null) { 
      cursor.close(); 
     } 
    } 
    return threadId; 
} 
Questions connexes