天天看點

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); 

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;  

        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;  

        } 

     本文轉自xyz_lmn51CTO部落格,原文連結:http://blog.51cto.com/xyzlmn/817121,如需轉載請自行聯系原作者