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文件