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”?你能举个例子来支持解释吗?
答案 0 :(得分: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权限。
答案 1 :(得分:0)
在您在SMS内容提供商中查询的表中,_id
是唯一的行ID号。它将随着每个消息(发送或接收)递增,这是该会话线程的一部分。 thread_id
是发件人和收件人之间的会话线程的数字ID;在“messages”表和内容提供程序中的“threads”表之间执行数据库连接时,将使用此数字。
消息交换示例:
Sender: Hello 1 (_id = 1)
Recipient: Foo (_id = 2)
Sender: Hello 2 (_id = 3)
Recipient: Bar (_id = 4)
对于以上所有thread_id
= 1,并且在会话线程表中,将有一个条目用于“发件人”和“收件人”之间的对话。当对话线程显示在应用程序中时,它将在消息表(上面的URI)和线程表之间进行数据库表连接,以仅显示该线程。
这有帮助吗?