Android短信管理

来源:互联网 发布:软件项目开发文档 编辑:程序博客网 时间:2024/05/16 09:15

Android手机系统自带的短信应用,收发的短信都存储在data/data/com.android.providers.telephony/databases文件夹下的mmssms.db数据库中的sms表中。调用该系统短信应用的uri是:content://sms/

表中的_id是自增的主键、address列是收发的手机号date列是收发时间的时间戳type列标识是收还是发:1表示收,2表示发body列是收发的短信内容

备份短信到本地SD卡时,需要添加写SD卡的权限,以及读系统短信和写系统短信的权限。

/** * 备份短信 *  * @param v */public void backupSms(View v) {// 1.从系统短信的内容提供者中获取所有短信Uri uri = Uri.parse("content://sms/");Cursor cursor = getContentResolver().query(uri,new String[] { "_id", "address", "date", "type", "body" },null, null, null);if (cursor != null && cursor.getCount() > 0) {List<SmsInfo> smsList = new ArrayList<SmsInfo>();SmsInfo sms;while (cursor.moveToNext()) {sms = new SmsInfo();sms.set_id(cursor.getInt(0));sms.setAddress(cursor.getString(1));sms.setDate(cursor.getLong(2));sms.setType(cursor.getInt(3));sms.setBody(cursor.getString(4));smsList.add(sms);}cursor.close();// 2.序列化到本地writeToLocal(smsList);}}


休眠时用SystemClock.sleep(1000);不用抛异常。

开启子线程向系统短信的数据库中写一条短信(相亲神器):

// 停10秒钟, 向系统短信数据库中写一条短信new Thread(new Runnable() {@Overridepublic void run() {SystemClock.sleep(10 * 1000);//休眠10秒钟Uri uri = Uri.parse("content://sms/");// 操作sms表的uriContentValues values = new ContentValues();values.put("address", "95558");values.put("type", "1");values.put("body", "您尾号是4633的中信卡账户, 收到RMB100, 000.00的转账,当前余额为: RMB899, 000.00【中信银行】");getContentResolver().insert(uri, values);}}).start();

手机上的联系人存储在data/data/com.android.providers.contacts/databases目录下的contacts2.db数据库中的raw_contacts表和data表中。

查询联系人信息时:

1、查询raw_contacts表中所有联系人的_id

2、到data表中查询对应raw_contact_id=_id的data1列、mimetype列的数据信息。data1列的数据信息根据mimetype_id列的值的不同,保存的信息也不同。

操作这两个表的uri分别是:

content://com.android.contacts/raw_contacts
content://com.android.contacts/data

查询联系人要添加读联系人的权限


添加联系人信息时:

1、raw_contacts表中添加一条记录本表中contact_id的值是等于_id的值的。

查询raw_contacts表中contact_id的最大值("contact_id desc limit 1"),加1添加到本表中。

2、根据添加的contact_id的值(即_id的值)到data表中根据mimetype值的不同添加data1列的记录,还要添加raw_contact_id的值,其值等于contact_id

添加联系人要添加写联系人的权限













0 0
原创粉丝点击