如何复制sharedpreferences到外部存储保持xml format,以便以后可以共享首选项。
sharedpreferences
xml format
试图读取sharedpreferences并另存为一个string文件,创建了JSON类型string,但我需要一个xml。想过遍历应用程序的内部存储和复制文件,然后将其放入外部存储,但这可能太复杂了。
string
JSON
xml
真的很想知道是否存在一种简单而明智的方式来传递`sharedpreferences。
使用此代码,
SharedPreferences preferences=this.getSharedPreferences("com.example.application", Context.MODE_PRIVATE); Map<String,?> keys = preferences.getAll(); Properties properties = new Properties(); for(Map.Entry<String,?> entry : keys.entrySet()){ String key = entry.getKey(); String value = entry.getValue().toString(); properties.setProperty(key, value); } try { File file = new File("externalPreferences.xml"); FileOutputStream fileOut = new FileOutputStream(file); properties.storeToXML(fileOut, "External Preferences"); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
并取回它,
try { File file = new File("externalPreferences.xml"); FileInputStream fileInput = new FileInputStream(file); Properties properties = new Properties(); properties.loadFromXML(fileInput); fileInput.close(); Enumeration enuKeys = properties.keys(); SharedPreferences.Editor editor = preferences.edit(); while (enuKeys.hasMoreElements()) { String key = (String) enuKeys.nextElement(); String value = properties.getProperty(key); editor.putString(key, value); editor.commit(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
注意 使用此代码只能处理字符串类型首选项,