android之xml序列化 模拟短信备份功能

1、设定短信的实体

package com.lanyoung.model;

public class SmsModel {
	private int id;//短信id
	private String body;//短信内容
	private String type;//短信类型
	private String date;//短信日期
	private String address;//短信发送地址
	
	
	public SmsModel() {
	}
	
	public SmsModel(int i, String body, String type, String date,
			String address) {
		super();
		this.id = i;
		this.body = body;
		this.type = type;
		this.date = date;
		this.address = address;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getBody() {
		return body;
	}
	public void setBody(String body) {
		this.body = body;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	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;
	}
	
	

}

2、编写布局文件代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    
    <Button
        android:onClick="savesms"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="34dp"
        android:text="备份短信" />

   

</RelativeLayout>

3、编写activity代码

package com.lanyoung.savesms;

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlSerializer;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

import com.lanyoung.model.SmsModel;

public class MainActivity extends Activity {
	private static List<SmsModel> smss=new ArrayList<SmsModel>();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		Log.i("changdu", smss.size()+"");
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		for (int i = 0; i < 10; i++) {//动态模拟生成十条短信
			smss.add(new SmsModel(i+1, "短信内容"+i+1, "1", System.currentTimeMillis()+"", "18105351757"));
		}
		Log.i("changdu", smss.size()+"");
		
	}
	public void savesms(View v){
		XmlSerializer s=Xml.newSerializer();//获得xml序列化
		File file =new File(Environment.getExternalStorageDirectory(), "info.xml");//保存到内存卡中
		try {//在生成序列化文件的时候一定注意标签要闭合,成对出现
			FileOutputStream os=new FileOutputStream(file);
			s.setOutput(os,"utf-8");
			s.startDocument("utf-8", true);
			s.startTag(null, "smss");
			for (SmsModel sms : smss) {
				s.startTag(null, "sms");
				s.attribute(null, "id", sms.getId()+"");
				
				s.startTag(null, "body");
				s.text(sms.getBody());
				s.endTag(null, "body");
				
				s.startTag(null, "type");
				s.text(sms.getType());
				s.endTag(null, "type");
				
				s.startTag(null, "date");
				s.text(sms.getDate());
				s.endTag(null, "date");
				
				s.startTag(null, "address");
				s.text(sms.getAddress());
				s.endTag(null, "address");
				
				s.endTag(null, "sms");
			}
			
			s.endTag(null, "smss");
			s.endDocument();
			os.flush();
			os.close();
			Toast.makeText(this, "成功", 0).show();
		} catch (Exception e) {
			e.printStackTrace();
			Toast.makeText(this, "失败", 0).show();
		} 
		
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


4、因为是存储到内存卡中,因此需要获得permission

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5、最后生成的xml文件




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ldw4033

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值