13

特定のSMSを使用してAndroidでメッセージングアクティビティを開く方法はありますか?

4

4 に答える 4

9

threadId表示する SMS/MMS スレッドの ID にする必要があります

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

これは私が見つけた最も簡単な方法です

于 2010-05-11T08:43:07.747 に答える
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);
于 2011-12-29T06:03:22.597 に答える
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;
}
于 2014-07-02T11:22:19.780 に答える