android随笔14——短信备份以及xml解…

来源:互联网 发布:java枚举的声明 编辑:程序博客网 时间:2024/06/08 19:14
public class SmsUtils {
public static void backupSms(Context ctx){

//备份短信之前先判断是否有SD卡,以及SD卡是否足够
  
  if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
   //没有SD卡
   Toast.makeText(ctx,"没有SD卡,无法备份短信", 0).show();
   return;
  }
  //判断SD卡存储空间是否足够
  File sdFile =Environment.getExternalStorageDirectory();
  if(sdFile.getFreeSpace()<10*1024*1024){
   Toast.makeText(ctx,"SD卡空间不足,无法备份短信", 0).show();
   return;
  }

Uri uri = Uri.parse("Content://sms");//获得一个URI对象
String[] projection = newString[]{"address","date","type","body"};//指定从db文件中哪几列获取值
Cursor cursor =ctx.getContentResolver().query(uri,projection,null,null,null);
try {
XmlSerializer serializer = Xml.newSerializer();
String path =Environment.getExternalStorageDirectory().getAbsolutePath()+"//backup_sms_z10.xml";
serializer.setOutput(newFileOutputStream(path),"UTF-8");
serializer.startDocument("UTF-8", true);//true 是说明这是一个单独的文件
serializer.startTag(null, "smss");//
serializer.attribute(null,"size",""+cursor.getCount());//cursor.getCount()必须为字符串
//查询数据库,返回cursor指向,第一行的上一行
while(cursor.moveToNext()){
String address = cursor.getString(0);
String date = cursor.getString(1);
String type = cursor.getString(2);
String body = cursor.getString(3);
serializer.startTag(null,"sms");
//address
serializer.startTag(null,"address");
serializer.text(address);
serializer.endTag(null, "address");
// date
serializer.startTag(null,"date");
serializer.text(date);
serializer.endTag(null, "date");
// type
serializer.startTag(null,"type");
serializer.text(type);
serializer.endTag(null, "type");
// body
serializer.startTag(null,"body");
serializer.text(body);
serializer.endTag(null, "body");
serializer.endTag(null, "sms");
 
serializer.endTag(null, "serializer");//
serializer.endDocument();
serializer.flush(); //刷新
} catch (Exception e) {
e.printStackTrace();
}
}
}

0 0
原创粉丝点击