2009-09-11 15 views

回答

9

threadId應該是短信的ID/MMS線程要查看

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

這是我發現

+0

如何獲取短信的線索ID? – Janusz 2010-12-29 19:02:08

+0

嘗試查看下面的findThreadIdFromAddress()方法:http://code.google.com/p/android-smspopup/source/browse/trunk/SMSPopup/src/net/everythingandroid/smspopup/SmsPopupUtils.java – 2011-09-17 12:38:41

+0

@paul_sns Dead鏈接。 – VickyS 2014-03-01 12:19:57

2

我從Messaging應用程序(lines 311-315)的源代碼中挖了出來,所以我很確定它可以工作,但我沒有任何經驗。

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

我覺得'線索ID'是不同於'短信ID'? 來自同一個人的不同短信(每個都有自己的ID)可以具有相同的線索ID。 – n179911 2009-09-14 17:48:02

4

試試這個

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

這最簡單的方法摘錄來自接受答案中的評論。在這裏爲後人發佈方法。

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; 
} 
相關問題