2016-09-27 7 views
2

私の計画は、そのスレッドIDによってSMS会話スレッドを開くことです。Androidは特定のSMSスレッドをスレッドIDで開きます

long threadId = Long.parseLong(THREAD_ID); 


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

しかし、私は次のエラーを取得する:私のコードがある

09-27 16:01:07.696: ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://mms-sms/conversations/3 }

誰もがこれで私を助けることはできますか?前もって感謝します。

J Doe;)

+0

http://stackoverflow.com/questions/39678042/how-to-open-sms-intent-to-read-not-send-message –

答えて

1

これはanswer of J. Doeの改善です。

"SMS_NUMBER_AS_STRING_HERE"を使用することは完全な解決策ではありません。列Telephony.Sms.ADDRESSの値を取得して、代わりに番号を使用する必要があります。

もう1つの修正は、インテントのデフォルトSMSパッケージを設定することです。これは、2つの理由から必要です。

  1. 「アプリを選択」ダイアログを避けてください。

  2. デフォルトのSMSアプリのみがメッセージを送信できるので、別のアプリを選択した場合は、ACTION_VIEWのインテントを使用しているにもかかわらず、エラーメッセージが表示されます(ハングアウトのようです)。ここで

は私のコードです:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", address, null)); 
intent.setPackage(Telephony.Sms.getDefaultSmsPackage(context)); 
2

私は自分で解決策を見つけました。 1つの特定のNumberからのすべてのmsgが1つのスレッドに送られるために機能します。あなたが(連絡先 - 名前ではない)からSMSを持っている番号と "新しいSMSの意図"を使用する場合、それは全体の会話を開きます。

だけで1行:

context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", "SMS_NUMBER_AS_STRING_HERE", null))); 
関連する問題