private void writeDeviceState(List<KMMDDeviceItem> deviceState) { XmlSerializer serializer = Xml.newSerializer(); StringWriter writer = new StringWriter(); try { serializer.setOutput(writer); serializer.startDocument("UTF-8", true); serializer.startTag("", "DeviceState"); for (KMMDDeviceItem item : deviceState) { serializer.startTag("", "item"); serializer.startTag("", "type"); serializer.text(item.getType()); serializer.endTag("", "type"); serializer.startTag("", "name"); serializer.text(item.getName()); serializer.endTag("", "name"); serializer.startTag("", "path"); serializer.text(item.getPath()); serializer.endTag("", "path"); serializer.startTag("", "dirtyservices"); serializer.attribute( "", "Dropbox", String.valueOf(item.getIsDirty(KMMDDropboxService.CLOUD_DROPBOX))); serializer.attribute( "", "GoogleDrive", String.valueOf(item.getIsDirty(KMMDDropboxService.CLOUD_GOOGLEDRIVE))); serializer.attribute( "", "UbutntoOne", String.valueOf(item.getIsDirty(KMMDDropboxService.CLOUD_UBUNTUONE))); serializer.endTag("", "dirtyservices"); serializer.startTag("", "revcodes"); serializer.attribute("", "Dropbox", item.getRevCode(KMMDDropboxService.CLOUD_DROPBOX)); serializer.attribute( "", "GoogleDrive", item.getRevCode(KMMDDropboxService.CLOUD_GOOGLEDRIVE)); serializer.attribute("", "UbuntuOne", item.getRevCode(KMMDDropboxService.CLOUD_UBUNTUONE)); serializer.endTag("", "revcodes"); serializer.endTag("", "item"); } serializer.endTag("", "DeviceState"); serializer.endDocument(); } catch (Exception e) { throw new RuntimeException(e); } // Attempt to write the state file to the private storage area. String FILENAME = DEVICE_STATE_FILE; try { FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(writer.toString().getBytes()); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }