-1
Uri uri = Uri.parse( "content://sms/inbox" );

Cursor cursor = context.getContentResolver().query(
                            uri,
                  new String[] { "_id", "thread_id", "address", "person", "date", "body" },
                            null,
                            null,
                            SORT_ORDER);

在上面的代码中,例如,“body”是消息的内容,“address”是电话号码。
那么什么是“_id”和“thread_id”呢?你能给我一个例子来支持解释吗?

4

2 回答 2

0

在您在 SMS 内容提供程序中查询的表中,_id有一个唯一的行 ID 号。它将随着作为该对话线程一部分的每条消息(发送或接收)而增加。是发件人和收件人之间对话线程的thread_id数字 ID;当在内容提供程序中的“消息”表和“线程”表之间执行数据库连接时,将使用此数字。

消息交换示例:

Sender: Hello 1   (_id = 1)
Recipient: Foo    (_id = 2)
Sender: Hello 2   (_id = 3)
Recipient: Bar    (_id = 4)

对于以上所有thread_id= 1,并且在对话线程表中将有一个条目,用于“发件人”和“收件人”之间的对话。当会话线程显示在应用程序中时,它将在消息表(您上面的 URI)和线程表之间进行数据库表连接,以仅显示该线程。

这有帮助吗?

于 2013-06-10T16:54:23.057 回答
0

像这样使用

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

do{
   String msgData = "";
   for(int idx=0;idx<cursor.getColumnCount();idx++)
   {
       msgData += " " + cursor.getColumnName(idx) + ":" + cursor.getString(idx);
   }
}while(cursor.moveToNext());

请添加 READ_SMS 权限。

于 2013-06-10T15:47:04.253 回答