Android实战教程第九篇之短信高效备份
程序员文章站
2024-03-02 18:14:10
android短信高效备份这篇文章,承接。使用高效的方式备份短信——xml序列化器。
存储短信,要以对象的方式存储。首先创建javabean:
pack...
android短信高效备份这篇文章,承接。使用高效的方式备份短信——xml序列化器。
存储短信,要以对象的方式存储。首先创建javabean:
package com.itydl.createxml.domain; public class message { private string body; private string date; private string address; private string type; public string getbody() { return body; } public void setbody(string body) { this.body = body; } public string getdate() { return date; } public void setdate(string date) { this.date = date; } public string getaddress() { return address; } public void setaddress(string address) { this.address = address; } public string gettype() { return type; } public void settype(string type) { this.type = type; } public message(string body, string date, string address, string type) { super(); this.body = body; this.date = date; this.address = address; this.type = type; } }
接着在mainactivity中的diamante如下:
package com.itydl.xmlserializer; import java.io.file; import java.io.fileoutputstream; import java.io.ioexception; import java.util.arraylist; import java.util.list; import org.xmlpull.v1.xmlserializer; import com.itheima.createxml.domain.message; import android.os.bundle; import android.app.activity; import android.util.xml; import android.view.menu; import android.view.view; //为了更好地保存不同,且负责的数据,使用xml序列器 public class mainactivity extends activity { list<message> smslist; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // 虚拟10条短信 smslist = new arraylist<message>(); for (int i = 0; i < 10; i++) { message sms = new message("小志好棒" + i, system.currenttimemillis() + "", "138" + i + i, "1"); smslist.add(sms); } } public void click(view v){ //使用xml序列化器生成xml文件。序列化器会把乱七八糟的东西(短信里有标签属性)过滤掉 //1.拿到序列化器对象 xmlserializer xs = xml.newserializer(); //2.初始化.因为涉及到xml文件,因此初始化也包含文件名和路径 file file = new file("sdcard/sms2.xml"); try { fileoutputstream fos = new fileoutputstream(file); //enconding:指定用什么编码生成xml文件 xs.setoutput(fos, "utf-8");//setoutput(outputstream os, string encoding) ,编码方式默认u8 //3.开始生成xml文件 //enconding:指定头结点中的enconding属性的值 xs.startdocument("utf-8", true);//生成头结点(最高一行),startdocument(string encoding, boolean standalone) xs.starttag(null, "message");//生成一个根节点,开始标签节点 for (message sms : smslist) { xs.starttag(null, "sms"); xs.starttag(null, "body");//start和end一对一对的写。还有四个子节点 xs.text(sms.getbody() + "<body>");//这样不会报错。而是把<body>当做了内容了 xs.endtag(null, "body"); xs.starttag(null, "date"); xs.text(sms.getdate()); xs.endtag(null, "date"); xs.starttag(null, "type"); xs.text(sms.gettype()); xs.endtag(null, "type"); xs.starttag(null, "address"); xs.text(sms.getaddress()); xs.endtag(null, "address"); xs.endtag(null, "sms"); } xs.endtag(null, "message"); //告诉序列化器,文件生成完毕 xs.enddocument(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } } }
最后也要记得加入权限:
复制代码 代码如下:
<uses-permission android:name="android.permission.write_external_storage"/>
可见这种方式解决了前面遇到的问题,而且高效了很多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。