Android短信管理

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() {
	@Override
	public void run() {
		SystemClock.sleep(10 * 1000);//休眠10秒钟
		
		Uri uri = Uri.parse("content://sms/");	// 操作sms表的uri
		
		ContentValues 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

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













评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值