2017-02-06 11 views
2

私はSMSの会話リストを作成しようとしています。最新のSMSだけを会話ビューで使用するにはどうすればよいですか?

Cursor cursor = activity.getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null); 

問題は、私はカーソルを使用する場合、私は1つの接触から複数のメッセージを取得することです:私は、カーソルを取得するには、このコードを使用しています。私はすべての連絡先から最新のメッセージだけを取得しようとしているので、会話のリストとしてrecyclerviewに表示することができます。事前!

+0

cursor.moveToFirst();最後に受信された最初のメッセージです。 –

+0

'content:// sms/conversations' URI(' Telephony.Sms.Conversations.CONTENT_URI')は各会話の要約を返します。 'snippet'カラムはそれぞれの最後のメッセージです。特に最後の_received_メッセージが必要な場合は、おそらくもう少し複雑です。 –

+1

オハイオ州大丈夫、これはまさに私が探していたものです!情報をありがとう、もしあなたがそれを答えにコピーすることができれば、私はそれをそのまま受け入れます。再度、感謝します! :D @MikkeM。 –

答えて

1

"content://sms/conversations" URI(Telephony.Sms.Conversations.CONTENT_URI)を照会中

おかげで、それぞれの最後のメッセージである"snippet"列(Telephony.Sms.Conversations.SNIPPET)で、各会話の要約を返します。

"msg_count"カラム(Telephony.Sms.Conversations.MESSAGE_COUNT)と戻りますこのクエリ - に追加そのIDで問い合わせることによって、完全な会話を取得するために使用することができ、"thread_id"カラム(Telephony.Sms.Conversations.THREAD_ID)、 - かなり自明です会話URI。例:

String threadId = ... 
Uri convoUri = Telephony.Sms.Conversations.CONTENT_URI 
       .buildUpon().appendPath(threadId).build(); 

これらのクエリはSMSメッセージのみを返します。 MMSも同様にしたい場合は、​​とTelephony.MmsSmsのURIが似ています。

関連する問題