您的位置:首页 > 移动开发 > Android开发

android系统短信库的一些用法

2011-12-15 13:47 423 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  短信 android 发件人