如何将sharedpreferences文件从内部存储传输到外部存储?

如何将共享首选项复制到保留xml format外部存储,以便以后可以共享首选项。

试图读取sharedpreferences并将其保存为文件中的string ,创建了一个string JSON类型,但我需要一个xml 。 考虑遍历应用程序的内部存储和复制文件并将其放在外部存储中,但这可能过于复杂。

真的很想知道是否有一种简单而明智的方式来传递`sharedpreferences。

使用此代码,

 SharedPreferences preferences=this.getSharedPreferences("com.example.application", Context.MODE_PRIVATE); Map keys = preferences.getAll(); Properties properties = new Properties(); for(Map.Entry 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(); } 

注意您只能使用此代码处理字符串类型首选项,