短信读写

Android下关于手机中的数据存储在:data/data/com.android.providers/telephony下,
其中短信存在:telephony/mmssms.db
电话存在:telephony/telephony.db

通过ContentProvider来读取手机中的短信数据库。
content://authorities/code

短信备份(读):
1.添加权限
2.写入sdcard权限

代码:“`
1.首先创建短信实体类 SmsInfo.java
class SmsInfo{
/**
* 短信id
*/
private int id;
/**
* 短信号码
*/
private String address;
/**
* 短信日期
*/
private long date;
/**
* 短信类型(发 / 收)
*/
private int type;
/**
* 短信内容
*/
private String body;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public long getDate() {
        return date;
    }

    public void setDate(long date) {
        this.date = date;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }
}

}


2.备份短信,序列化到本地

/**
* 备份短信
*/
public void backupSms(){

    // 1.查出所有的短信
    Uri uri = Uri.parse("content://sms/");

    ContentResolver resolver = getContentResolver();
    Cursor cursor = resolver.query(uri, new String[]{"_id", "address", "date", "type", "body"}, null, null, null);

    List<SmsInfo> smsInfoList = new ArrayList<SmsInfo>();

    if(cursor!=null && cursor.getCount()>0){
        SmsInfo smsInfo;
        while (cursor.moveToNext()){
            smsInfo = new SmsInfo();
            smsInfo.setId(cursor.getInt(0));
            smsInfo.setAddress(cursor.getString(1));
            smsInfo.setDate(cursor.getLong(2));
            smsInfo.setType(cursor.getInt(3));
            smsInfo.setBody(cursor.getString(4));

            smsInfoList.add(smsInfo);
        }
        cursor.close();
    }

    // 2.序列化到本地
    writeToLocal(smsInfoList);

}

/**
 * 序列化到本地
 * @param smsInfoList
 */
private void writeToLocal(List<SmsInfo> smsInfoList) {

    XmlSerializer xmlSerializer = Xml.newSerializer();

    // 指定输出位置
    File file = new File(Environment.getExternalStorageDirectory(), "sms.xml");
    FileOutputStream fos = null;
    try {
        fos = new FileOutputStream(file);
        // 设置编码方式
        xmlSerializer.setOutput(fos, "utf-8");

        xmlSerializer.startDocument("utf-8", true);
        xmlSerializer.startTag(null, "SmsInfos");
        for(SmsInfo smsInfo : smsInfoList){
            xmlSerializer.startTag(null, "SmsInfo");
            xmlSerializer.attribute(null, "id", String.valueOf(smsInfo.getId()))

            xmlSerializer.startTag(null, "address");
            xmlSerializer.text(String.valueOf(smsInfo.getAddress()));
            xmlSerializer.endTag(null, "address");

            xmlSerializer.startTag(null, "date");
            xmlSerializer.text(String.valueOf(smsInfo.getDate()));
            xmlSerializer.endTag(null, "date");

            xmlSerializer.startTag(null, "type");
            xmlSerializer.text(String.valueOf(smsInfo.getType()));
            xmlSerializer.endTag(null, "type");

            xmlSerializer.startTag(null, "body");
            xmlSerializer.text(String.valueOf(smsInfo.getBody()));
            xmlSerializer.endTag(null, "body");

            xmlSerializer.endTag(null, "SmsInfo");
        }
        xmlSerializer.endTag(null, "SmsInfos");
        xmlSerializer.endDocument();

        xmlSerializer.flush();

        Toast.makeText(this, "备份成功", Toast.LENGTH_LONG).show();
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, "备份失败", Toast.LENGTH_LONG).show();
    }
}

===========================================
写短信:

需要权限:

代码:`
private void writeSms(){
Uri uri = Uri.parse(“content://sms/”);
ContentResolver resolver = getContentResolver();
ContentValues values = new ContentValues();
values.put(“address”, “65566”); // 发信人
values.put(“type”, “1”); // 接收短信
values.put(“body”, “Hello,我是65566”);
resolver.insert(uri, values);
}
“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值