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(); }}
新闻热点
疑难解答