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();
    }

}
Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐