最近心血来潮想写一个小软件。我想得到的信息有 
1 当前所有短信的线程(threads_id) 
2 线程的最后一条短信 
3 每一个线程的短信数。 
换句话说就是类似系统自带短信或者handcent第一页能看到的信息我都想要
所有这些都在 mmssms.db的threads表中。但是发现sdk中没有给出相关uri。
搜索了一晚上没有解决办法。发现这个链接里的大大有着相似问题。但是最后的解决办法没有写清楚。http://topic.csdn.net/u/20100804/12/67607078-E17C-4AFC-8228-9DCF9A366B03.html目前已知的是
1.这个threads表无法直接读取。确实没有相关uri。
2.我没有mmssms.db的读取权限。只能使用contentprovide。
由上文链接貌似有人利用
getContentResolver().query(Uri.parse("content://sms/"), new String[]{"* from threads --"}, null, null, null);
搞出来了threads表。我不是专门学编程的。数据库我实在是不在行。已经看了好几天数据库的书了。结果收效不好。麻烦哪位大哥帮帮忙。能导出我要的信息。谢谢。最好有代码。

解决方案 »

  1.   

    public static Uri URI_THREAD = Uri.parse("content://mms-sms/conversations").buildUpon().appendQueryParameter(
    "simple", "true").build();threads 可以通过这个uri读取 
    写入 不行 只能通过函数getorcreatethreadid
      

  2.   

    我错了。一直上不了网。其实我贴的那句就已经能解决了(我一开始2了。)。现在问题转变了:我无法读取收件人地址。貌似上一个人也是如此:所以也就是说:我知道的是thread_ID。我现在要通过这个值查找联系人姓名。貌似我必须进行两次数据库操作。即:1通过thread_ID查找发件人address。然后通过address查找联系人姓名和头像。这个我怕太慢了。大家有好的办法么?
    PS:小问题:线程之间通信(handlermassage)开销很大么?我想把所有的数据库操作都用另一个线程完成。