2009-09-11 8 views

Odpowiedz

9

threadId powinien być identyfikator SMS/MMS wątku chcesz zobaczyć

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

Jest to najprostszy sposób znalazłem

+0

Jak uzyskać identyfikator wątku sms? – Janusz

+0

Spróbuj spojrzeć na metodę findThreadIdFromAddress() tutaj: http://code.google.com/p/android-smspopup/source/browse/trunk/SMSPopup/src/net/everythingandroid/smspopup/SmsPopupUtils.java –

+0

@paul_sns Dead połączyć. – VickyS

2

Wygrzebałem to ze źródła dla aplikacji Wiadomości (lines 311-315), więc jestem pewien, że to zadziała, ale nie mam z tym żadnego doświadczenia.

// 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

Myślę, że "identyfikator wątku" różni się od "sms id"? różne sms od tej samej osoby (każda ma własny identyfikator) może mieć ten sam identyfikator wątku. – n179911

4

Spróbuj

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

ten Fragment pochodzi z komentarza w zaakceptowanej odpowiedzi. Zamieszczanie tutaj metody dla potomności.

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; 
} 
Powiązane problemy