将信息持久化到xml文件中

/*
	 * 把联系人的集合信息,以xml的格式,写到一个输出流中 
	 */
	public static void saveSms(List<SmsInfo> infos , OutputStream os) throws Exception{
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(os, "UTF-8");
		serializer.startDocument("UTF-8", true);
		serializer.startTag(null, "smss");
		for (SmsInfo info : infos){
			serializer.startTag(null, "sms");
			serializer.startTag(null, "address");
			serializer.text(info.getAddress());
			serializer.endTag(null, "address");
			
			serializer.startTag(null, "body");
			serializer.text(info.getBody());
			serializer.endTag(null, "body");
			
			
			serializer.startTag(null, "date");
			serializer.text(info.getDate());
			serializer.endTag(null, "date");
			
			serializer.startTag(null, "type");
			serializer.text(info.getType());
			serializer.endTag(null, "type");
			serializer.endTag(null, "sms");
		}
		serializer.endTag(null, "smss");
		serializer.endDocument();
		
		//注意  一定要flush这个 输出流 
		os.flush();
		os.close();
	}

//调用上面的方法
new Thread(){
			@Override
			public void run() {
				// TODO Auto-generated method stub
				 List<SmsInfo> smsInfos =	 SmsUtil.getSmsInfos(getApplicationContext());
				 File file = new File("/sdcard/backsms.xml");
				 try {
					FileOutputStream fos = new FileOutputStream(file);
					 SmsUtil.saveSms(smsInfos, fos);
					 Looper.prepare();
					 Toast.makeText(getApplicationContext(), "备份完成", 1).show();
					 Looper.loop();
				 } catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
				 super.run();
			}			
		}.start();

  

posted @ 2012-07-20 08:08  ligang305  阅读(491)  评论(0)    收藏  举报