Android 获取短信会话信息
来源:互联网 发布:手机管家数据恢复 编辑:程序博客网 时间:2024/04/30 18:37
Android 手机信息存放在mmssms.db数据库。
短讯息主要用到sms表和threads表。
查看其表结构
sms表,信息表
threads表
1.mesage_count该会话的消息数量
2.recipient_ids为联系人ID,这个ID不是联系人表中的_id,而是指向表canonical_address里的id,
canonical_address这个表同样位于mmssms.db,它映射了recipient_ids到一个电话号码,也就是说,
最终获取联系人信息,还是得通过电话号码;
3.snippet为最后收到/发出的信息
4._id为会话id,他关联到sms表中的thread_id字段。
Cursor cursor = cr.query(Uri.parse("content://sms/"),new String[] { "* from threads--" }, null, null, null);
查询Threads表。
网上说Threads的URI为:"content://mms-sms/conversations"
不过由于本人使用这个Uri查询出错,故使用content://sms/ 通过构造查询字段数组来查询Threads表。
public static List<Threads> getSession(ContentResolver cr) {Cursor cursor = cr.query(Uri.parse("content://sms/"),new String[] { "* from threads--" }, null, null, null);list = new ArrayList<Threads>();if (cursor.moveToFirst()) {do {if (threads == null) {threads = new Threads();}threads.set_id(cursor.getInt(ID));threads.setDate(cursor.getLong(DATE));threads.setError(cursor.getInt(ERROR));threads.setHas_attachment(cursor.getInt(HAS_ATTACHMENT));threads.setMessage_count(cursor.getInt(MESSAGE_COUNT));threads.setRead(cursor.getInt(READ));threads.setRecipient_ids(cursor.getString(RECIPIENT_IDS));threads.setSnippet(cursor.getString(SNIPPET));threads.setSnippet_cs(cursor.getInt(SNIPPET_CS));threads.setType(cursor.getInt(TYPE));list.add(threads);threads = null;} while (cursor.moveToNext());}return list;}
最后通过获取到的thread_id作为参数再去查询sms表。就可以获取每个会话的所有信息。
package wu.lis.bu.utils;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import wu.lis.bu.bean.Status;import android.content.ContentResolver;import android.database.Cursor;import android.net.Uri;import android.util.Log;public class SmsService {private final String SMS_URI_ALL = "content://sms/";private final String SMS_URI_INBOX = "content://sms/inbox";private final String SMS_URI_SEND = "content://sms/send";private final String SMS_URI_DRAFT = "content://sms/draft";List<Status> sms_list = null;Status status = null;public List<Status> getSmsInphone(ContentResolver cr, Integer thread_id) {sms_list = new ArrayList<Status>();String[] projection = new String[] { "_id", "address", "person","body", "date", "type" };Uri uri = Uri.parse(SMS_URI_ALL);Cursor cursor = cr.query(uri, projection, "thread_id=?",new String[] { Integer.toString(thread_id) }, "date desc");if (cursor.moveToFirst()) {String name;String phoneNumber;String smsBody;String date;String type;//int nameColumn = cursor.getColumnIndex("person");int phoneNumberColumn = cursor.getColumnIndex("address");int smsBodyColumn = cursor.getColumnIndex("body");int dateColumn = cursor.getColumnIndex("date");int typeColumn = cursor.getColumnIndex("type");do {status = new Status();//name = cursor.getString(nameColumn);String pNumber = "";phoneNumber = cursor.getString(phoneNumberColumn);if (phoneNumber.length() > 11) {pNumber = phoneNumber.substring(phoneNumber.length() - 11,phoneNumber.length());} else {pNumber = phoneNumber;}name = PhoneService.getPeople(cr, pNumber);smsBody = cursor.getString(smsBodyColumn);SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");Date d = new Date(Long.parseLong(cursor.getString(dateColumn)));date = dateFormat.format(d);int typeId = cursor.getInt(typeColumn);if (typeId == 1) {type = "接收";} else if (typeId == 2) {type = "发送";} else {type = "";}if (smsBody == null) {smsBody = "";}status.setPhoneNum(phoneNumber);status.setContent(smsBody);status.setLastReceive(date);status.setPerson(name);status.settype(type);sms_list.add(status);status = null;} while (cursor.moveToNext());}for (Status status : sms_list) {Log.i("Status", status.getPhoneNum());}return sms_list;}}
- Android 获取短信会话信息
- Android 获取短信会话信息 .
- android学习笔记31--------------短信会话列表信息的获取
- Android 获取短信会话列表
- Android 获取短信会话列表
- Android 获取短信会话列表
- 获取手机短信会话信息 Android
- android获取短信电话信息
- android获取短信电话信息
- Android 短信会话相关
- Android-通讯录:获取短信会话列表(包括群发的)
- android 获取手机中的短信信息
- Android:ContentProvider获取短信的信息
- 【Android】短信应用——短信信息实时获取
- 【Android】短信应用——短信信息实时获取
- Android开发---用户注册+短信验证+(自动获取短信信息)
- 会话信息获取函数
- android发送短信、会话列表、短信详情
- css按钮滑动
- sour
- 删除两个双向链表中值相同的结点--带空白头结点
- 内存"缩水"之谜
- Memcache
- Android 获取短信会话信息
- ORA-12516 解决方法
- o.boj 1022 Steps
- httplib2---python下的http请求终结者
- htons(), ntohl(), ntohs(),htons()这4个函数
- <<项目架构那点儿事>>——hibernate泛型Dao,让持久层简洁起来 ...
- h3viewer 集成 到 vs2010中去
- 程序员的成长历程
- 史上最详细金卡介绍以及金卡制作教程(附风暴数码CID转换码链接)