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

短信备份,插入一条新的短信

2017-02-25 09:23 190 查看
package com.itheima74.test;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.util.Xml;
import android.view.View;
import android.widget.Toast;

import org.xmlpull.v1.XmlSerializer;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
* 1.通过ContentResolver对象获取系统所有短信
* 2.通过XmlSerializer对象序列化短信到sd卡
* 3.通过ContentResolver对象插入一条新的短信
* 4.所需权限:READ_SMS,WRITE_SMS,WRITE_EXTERNAL_STORAGE
*/
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}

// 点击按钮,进行短信备份
public void click1(View view) {
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(Uri.parse("content://sms/"),
new String[]{"address", "body", "date"}, null, null, null);

// 序列化短信到sd卡
FileOutputStream fos = null;
XmlSerializer xmlSerializer = Xml.newSerializer();
try {
fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/smsbackup.xml"));
xmlSerializer.setOutput(fos, "utf-8");
xmlSerializer.startDocument("utf-8", true);

xmlSerializer.startTag(null, "smss");
if (cursor != null && cursor.getCount() > 0) {
while (cursor.moveToNext()) {
xmlSerializer.startTag(null, "sms");

xmlSerializer.startTag(null, "address");
xmlSerializer.text(cursor.getString(0));
xmlSerializer.endTag(null, "address");

xmlSerializer.startTag(null, "body");
xmlSerializer.text(cursor.getString(1));
xmlSerializer.endTag(null, "body");

xmlSerializer.startTag(null, "date");
xmlSerializer.text(cursor.getString(2));
xmlSerializer.endTag(null, "date");

xmlSerializer.endTag(null, "sms");
}
}
xmlSerializer.endTag(null, "smss");

xmlSerializer.endDocument();
Toast.makeText(this, "备份成功", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

// 点击按钮,插入一条短信
public void click2(View view) {
ContentResolver contentResolver = getContentResolver();
ContentValues values = new ContentValues();
values.put("address", "110");
values.put("body", "马上过来一趟,否则后果自负!");
values.put("date", System.currentTimeMillis());
contentResolver.insert(Uri.parse("content://sms"), values);
Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();
}

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