android系统短信库的一些用法

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

Cursor  mCursor =
 
                    managedQuery(Uri.parse("content://sms"),
 
                        new String[] {"_id,address,date,read,status,type,body,count(address) as "
 
                            + "totleCount from (select _id,substr(address,4) as address,date,read,status,type,body "
 
                            + "from sms where address like \"+86%\" union select _id,address,date,read,status,type,body "
 
                            + "from sms where address not like \"+86%\") r group by r.address order by r.date desc --"},
 
                        null,
 
                        null,
 
                        null);


 

 

2、删除一个联系人的所有短信会话,包括+86的号码

    /**
 
     * 删除一个联系人的所有短信会话,包括+86的号码
 
     * @param phone
 
     */
 
    public int deleteMsgSession(Context context, String phone)
 
    {
 
        String phoneBytitle = "";
 
        if (!phone.startsWith("+86"))
 
        {
 
            phoneBytitle = "+86" + phone;
 
        }
 
        else
 
        {
 
                phoneBytitle = phone.substring(3);
 
        }
 
        
 
        Cursor cursor =
 
            context.getContentResolver()
 
                .query(Uri.parse("content://sms"), new String[] {"distinct thread_id"}, "address = ? or address = ?", new String[] {phone, phoneBytitle}, null);
 
        List<String> list = new ArrayList<String>();
 
        if (null != cursor)
 
        {
 
            if (cursor.moveToFirst())
 
            {
 
                do
 
                {
 
                    int thread_id = cursor.getInt(0);
 
                    list.add(String.valueOf(thread_id));
 

                } while (cursor.moveToNext());
 
            }
 
        }
 
         if (null != cursor)
 
        {
 
            cursor.close();
 
            cursor = null;
 
        }        
 
        int size = list.size();
 
        if(size == 0)
 
        {
 
            return -1;
 
        }
 
        else
 
        {
 
            int num = 0;
 
            for (int i = 0; i < size; i++)
 
            {
 
                int res = context.getContentResolver().delete(Uri.parse("content://sms/conversations/" + list.get(i)),
 
                    null, null);
 
                num = num + res;
 
            }
 
//            System.out.println("sms_num:" + num);
 
            return num;
 
        }
 
    }


3、向系统库插入短信、版本不同插入的字段有所区别

/**
 
     * 将发送的短信保存到系统短信库中
 
     */
 
    private void foreverSendMsg(String content)
 
    {
 
        ContentValues values = new ContentValues();
 
        //系统SDK的版本号
 
        String sdkVersion = android.os.Build.VERSION.SDK;
 
        try
 
        {
 
            // 发送时间
 
            values.put("date", System.currentTimeMillis());
 
            // 阅读状态
 
            values.put("read", 1);
 
            // 送达号码
 
            values.put("address", phoneNumberTextView.getText().toString());
 
            // 送达内容
 
            values.put("body", content);
 
         
 
            //SDK为2.1时,插入的字段
 
            if(ConstValue.SDK_VERSION == Integer.valueOf(sdkVersion))
 
            {
 
                values.put("status", -1);
 
                values.put("type", 2);
 
//                values.put("locked", 0);
 
            }
 
            else
 
            {
 
                // 设置可见
 
              values.put("seen", 1);
 
            }
 
         
 
            getContentResolver().insert(Uri.parse("content://sms/sent"), values);
 
        }
 
        catch (Exception e)
 
        {
 
            e.printStackTrace();
 
        }
 
        finally
 
        {
 
            values = null;
 
        }


 /**
* @author 张兴业
* 邮箱:xy-zhang#163.com
* android开发进阶群:278401545
*
*/

posted @ 2011-12-15 13:47  张兴业  阅读(522)  评论(0编辑  收藏  举报