Android学习(22) -- 数据存储之使用xml保存数据

来源:互联网 发布:宋喆职务侵占罪知乎 编辑:程序博客网 时间:2024/04/29 10:26

在实际开发中,经常会用到xml来存储数据,比如:备份手机联系人,备份短信等等。我们以备份短信为例来讲解下xml的使用。

要想备份短信,那么我们就需要创建一个操作短信的JavaBean。如代码:

public class Message {private String body;<span style="white-space:pre"></span>//短信内容private String date;    //时间private String address; //地址private String type;    //类型 1是接受 2是发送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;}}

接下来,我们在Activity中编写一个点击事件用于存储短信(为了方便理解xml操作,我们使用模拟的数据的方式进行演示)。

public class MainActivity extends Activity {List<Message> smsList;@Overrideprotected 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() + "", "133"+i+i, "1");smsList.add(sms);}}public void click(View v){if(Environment .getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ){//在内存中把xml备份短信的格式拼接出来StringBuffer sb = new StringBuffer();sb.append("<?xml version='1.0' encoding='utf-8' standalone='yes' ?>");sb.append("<messages>");for (Message sms : smsList) {sb.append("<sms>");sb.append("<body>");sb.append(sms.getBody());sb.append("</body>");sb.append("<date>");sb.append(sms.getDate());sb.append("</date>");sb.append("<type>");sb.append(sms.getType());sb.append("</type>");sb.append("<address>");sb.append(sms.getAddress());sb.append("</address>");sb.append("</sms>");}sb.append("</messages>");File file = new File(Environment .getExternalStorageDirectory(),"sms.xml");try {FileOutputStream fos = new FileOutputStream(file);fos.write(sb.toString().getBytes());fos.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}else{Toast.makeText(SDcardActivity.this,"此时SDcard不存在或者不能进行读写操作", Toast.LENGTH_SHORT).show();}}}


0 0
原创粉丝点击