How to open up a specific SMS in android

前端 未结 4 571
死守一世寂寞
死守一世寂寞 2021-01-04 09:03

Is there a way to open up the Messaging Activity on android with a specific SMS?

相关标签:
4条回答
  • 2021-01-04 09:35

    threadId should be the id of the SMS/MMS thread you want to view

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

    This is the simplest way I found

    0 讨论(0)
  • 2021-01-04 09:35

    This snippet is from a comment in the accepted answer. Posting the method here for posterity.

    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;
    }
    
    0 讨论(0)
  • 2021-01-04 09:38

    I dug this out of the source for the Messaging app (lines 311-315), so I'm pretty sure it'll work, but I don't have any experience with it.

    // 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 讨论(0)
  • 2021-01-04 09:56

    Try this

    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 讨论(0)
提交回复
热议问题