如何通过thread_id获取所有消息的正文?

时间:2015-09-15 12:13:35

标签: android sms android-contentprovider

我有一个显示我的收件箱的活动,此活动有一个listview和一个OnItemClickListener,当我点击每个项目时,新的活动开始:我想显示我点击它的联系人的所有消息是这里的一部分我的活动代码:

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_conversation);
    ContentResolver contentResolver = getContentResolver();
    Bundle extras = getIntent().getExtras();
    String value = null;
    if (extras != null) {
        value = extras.getString("id");
    }
    Uri uri = Uri.parse("content://sms/conversations/");
    Cursor smsCur = contentResolver.query(uri, null, "thread_id=" + value, null, null);

现在我想通过thread_id获取我从之前的活动中得到的所有消息,但我不知道怎么做?我的问题是如何获取邮件正文?关于这个主题有很多问题,但我对如何查询邮件正文一无所知!

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码来获取对话。

获取已发送的消息

Uri mSmsinboxQueryUri = Uri.parse("content://sms/sent");

获取收件箱邮件

Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");

对于SMS-MMS两者:

Uri uri = Uri.parse("content://mms-sms/conversations/");

下面的代码阅读消息

Cursor cursor1 = getContentResolver().query(mSmsinboxQueryUri,new String[] { "_id", "thread_id", "address", "person", "date","body", "type" }, null, null, null);
String[] columns = new String[] { "address", "person", "date", "body","type" };
if (cursor1.getCount() > 0) {
   String count = Integer.toString(cursor1.getCount());
   while (cursor1.moveToNext()){
       String address = cursor1.getString(cursor1.getColumnIndex(columns[0]));
       String name = cursor1.getString(cursor1.getColumnIndex(columns[1]));
       String date = cursor1.getString(cursor1.getColumnIndex(columns[2]));
       String msg = cursor1.getString(cursor1.getColumnIndex(columns[3]));
       String type = cursor1.getString(cursor1.getColumnIndex(columns[4]));
    }
}

<强>参考

答案 1 :(得分:0)

我找到了一种通过thread_id获取会话的所有消息的方法,因此我可以在两个消息之间获取消息而不是其他消息:

 Uri uri = Uri.parse("content://sms/");
 cursor = contentResolver.query(uri, null, "thread_id=" + value, null, "date asc");

有一个名为&#34的列;类型&#34;它显示消息是传入还是传出,因此传入消息显示属于联系人的部分会话,而传出消息显示我的部分会话,我认为这是一种有效的方式。