生成xml文件,模拟备份短信,创建短信的业务bean,创建一个domain的包放业务bean,这个业务bean里面,定义成员属性,生成get set方法,生成有参和无参的构造方法。
生成随机数,实例化Random,调用Random对象的nextInt(n)方法,生成0到n之间的随机数,获取当前系统的时间戳System.currentTimeMillis(),使用for循环,循环生成一个list集合,代表短信的内容
点击保存按钮以后,使用StringBuilder对象append()拼接成一个xml的文件内容,根据上几节内容保存的SD卡中。记住要在清单文件中加权限
android.permission.WRITE_EXTERNAL_STORAGE,如果出现两个清单文件,不能删除这个,是工具bug。如果右键部署的时候,又开启了一个模拟器,那么这是adb挂掉了,关闭eclipse,在任务管理器中关闭adb.exe,重新打开eclipse。
以上是传统方式,android提供了一个面向对象的方式
获取XmlSerilier对象,通过Xml.newSerilier()方法
调用XmlSerilier对象的setOutput(os,encoding)方法,文件输出流,编码
调用XmlSerilier对象的startDocument(encoding,standalone)方法,xml文件的声明,编码,是否独立
调用XmlSerilier对象的startTag(namespace,name)方法,开始节点,命名空间,节点名称
调用XmlSerilier对象的endTag(namespace,结束节点,命名空间,节点名称
调用XmlSerilier对象的attribute(namespace,name,value)方法,节点属性,命名空间,属性名称,属性值
activity代码:
- package com.tsh.makexml;
- import java.io.File;
- java.io.FileNotFoundException;
- java.io.FileOutputStream;
- java.io.IOException;
- java.util.ArrayList;
- java.util.List;
- java.util.Random;
- org.xmlpull.v1.XmlSerializer;
- com.tsh.makexml.domain.SmsInfo;
- android.app.Activity;
- android.os.Bundle;
- android.os.Environment;
- android.provider.Telephony.Sms;
- android.util.Xml;
- android.view.View;
- android.widget.Toast;
- public class MainActivity extends Activity {
- private List<SmsInfo> smsInfos;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- smsInfos=new ArrayList<SmsInfo>();
- Random random=new Random();
- String num="188000000";
- for(int i=0;i<10;i++){
- int type=random.nextInt(2)+1;
- smsInfos.add(new SmsInfo(System.currentTimeMillis(),type,"短信内容"+i,num+i));
- }
- }
- /**
- * 备份短信第一种
- * @param v
- */
- backSms(View v){
- StringBuilder sb= StringBuilder();
- sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
- sb.append("<smss>");
- for(SmsInfo sms:smsInfos){
- sb.append("<body>"+sms.getMessage()+"</body>");
- sb.append("<date>"+sms.getDate()+"</date>");
- sb.append("<type>"+sms.getType()+"</type>");
- sb.append("<tel>"+sms.getAddress()+"</tel>");
- }
- sb.append("</smss>"try {
- File file=new File(Environment.getExternalStorageDirectory(),"backup.xml");
- FileOutputStream fos= FileOutputStream(file);
- fos.write(sb.toString().getBytes());
- fos.close();
- Toast.makeText(this,"保存成功",0).show();
- } catch (Exception e) {
- Toast.makeText().show();
- }
- }
- * 备份短信第二种
- * backSms2(View v){
- XmlSerializer serializer=Xml.newSerializer();
- );
- FileOutputStream os= FileOutputStream(file);
- serializer.setOutput(os,"utf-8");
- serializer.startDocument("utf-8",true);
- serializer.startTag(null,"smss");
- (SmsInfo sms:smsInfos){
- serializer.startTag();
- serializer.attribute(,sms.getAddress());
- serializer.text(sms.getMessage());
- serializer.endTag();
- }
- serializer.endTag();
- serializer.endDocument();
- os.close();
- Toast.makeText().show();
- }
- }
- }
业务bean代码:
- com.tsh.makexml.domain;
- class SmsInfo {
- private long date;
- int type;
- private String message;
- String address;
- public SmsInfo() {
- }
- public SmsInfo(long date,1)"> type,String message,String string) {
- ();
- this.date = date;
- this.type = type;
- this.message = message;
- this.address = string;
- }
- getDate() {
- return date;
- }
- void setDate( date) {
- getType() {
- type;
- }
- void setType( type) {
- String getMessage() {
- message;
- }
- setMessage(String message) {
- String getAddress() {
- address;
- }
- setAddress(String address) {
- address;
- }
- }