、查询所有短信,按发件人进行分组

[Android实例] 系统短信库的一些用法 

  [复制链接]
   

61

主题

14

好友

3758

积分

No.6 江湖开发者

Rank: 6Rank: 6

升级  25.27%

精华
0
帖子
772
e币
3023 元
跳转到指定楼层
楼主
  发表于 2011-12-12 15:51:55  | 只看该作者  | 倒序浏览
0
本帖最后由 wanghaiting_and 于 2011-12-12 17:43 编辑

1、查询所有短信,按发件人进行分组
  1. Cursor  mCursor =
  2.                     managedQuery(Uri.parse("content://sms"),
  3.                         new String[] {"_id,address,date,read,status,type,body,count(address) as "
  4.                             + "totleCount from (select _id,substr(address,4) as address,date,read,status,type,body "
  5.                             + "from sms where address like \"+86%\" union select _id,address,date,read,status,type,body "
  6.                             + "from sms where address not like \"+86%\") r group by r.address order by r.date desc --"},
  7.                         null,
  8.                         null,
  9.                         null);
复制代码
2、删除一个联系人的所有短信会话,包括+86的号码
  1.     /**
  2.      * 删除一个联系人的所有短信会话,包括+86的号码
  3.      * @param phone
  4.      */
  5.     public int deleteMsgSession(Context context, String phone)
  6.     {
  7.         String phoneBytitle = "";
  8.         if (!phone.startsWith("+86"))
  9.         {
  10.             phoneBytitle = "+86" + phone;
  11.         }
  12.         else
  13.         {
  14.                 phoneBytitle = phone.substring(3);
  15.         }
  16.         
  17.         Cursor cursor =
  18.             context.getContentResolver()
  19.                 .query(Uri.parse("content://sms"), new String[] {"distinct thread_id"}, "address = ? or address = ?", new String[] {phone, phoneBytitle}, null);
  20.         List<String> list = new ArrayList<String>();
  21.         if (null != cursor)
  22.         {
  23.             if (cursor.moveToFirst())
  24.             {
  25.                 do
  26.                 {
  27.                     int thread_id = cursor.getInt(0);
  28.                     list.add(String.valueOf(thread_id));

  29.                 } while (cursor.moveToNext());
  30.             }
  31.         }
  32.          if (null != cursor)
  33.         {
  34.             cursor.close();
  35.             cursor = null;
  36.         }        
  37.         int size = list.size();
  38.         if(size == 0)
  39.         {
  40.             return -1;
  41.         }
  42.         else
  43.         {
  44.             int num = 0;
  45.             for (int i = 0; i < size; i++)
  46.             {
  47.                 int res = context.getContentResolver().delete(Uri.parse("content://sms/conversations/" + list.get(i)),
  48.                     null, null);
  49.                 num = num + res;
  50.             }
  51. //            System.out.println("sms_num:" + num);
  52.             return num;
  53.         }
  54.     }
复制代码

3、向系统库插入短信、版本不同插入的字段有所区别
  1. /**
  2.      * 将发送的短信保存到系统短信库中
  3.      */
  4.     private void foreverSendMsg(String content)
  5.     {
  6.         ContentValues values = new ContentValues();
  7.         //系统SDK的版本号
  8.         String sdkVersion = android.os.Build.VERSION.SDK;
  9.         try
  10.         {
  11.             // 发送时间
  12.             values.put("date", System.currentTimeMillis());
  13.             // 阅读状态
  14.             values.put("read", 1);
  15.             // 送达号码
  16.             values.put("address", phoneNumberTextView.getText().toString());
  17.             // 送达内容
  18.             values.put("body", content);
  19.          
  20.             //SDK为2.1时,插入的字段
  21.             if(ConstValue.SDK_VERSION == Integer.valueOf(sdkVersion))
  22.             {
  23.                 values.put("status", -1);
  24.                 values.put("type", 2);
  25. //                values.put("locked", 0);
  26.             }
  27.             else
  28.             {
  29.                 // 设置可见
  30.               values.put("seen", 1);
  31.             }
  32.          
  33.             getContentResolver().insert(Uri.parse("content://sms/sent"), values);
  34.         }
  35.         catch (Exception e)
  36.         {
  37.             e.printStackTrace();
  38.         }
  39.         finally
  40.         {
  41.             values = null;
  42.         }
复制代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值