您的位置:首页 > 其它

系统短信库的一些用法

2013-07-17 14:37 204 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: