Skip to content Skip to sidebar Skip to footer

How To Transfer Sharedpreferences File From Internal Storage To External Storage?

How to copy sharedpreferences to external storage keeping xml format, so later it could be possible to share preferences. Tried to read sharedpreferences and save as a string into

Solution 1:

Use this code,

SharedPreferences preferences=this.getSharedPreferences("com.example.application", Context.MODE_PRIVATE);
Map<String,?> keys = preferences.getAll();
Properties properties = newProperties();
for(Map.Entry<String,?> entry : keys.entrySet()){
    String key = entry.getKey();
    String value = entry.getValue().toString();
    properties.setProperty(key, value);      
}
try {
    File file = newFile("externalPreferences.xml");
    FileOutputStream fileOut = newFileOutputStream(file);
    properties.storeToXML(fileOut, "External Preferences");
    fileOut.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

and to retrive use this,

try {
    Filefile=newFile("externalPreferences.xml");
    FileInputStreamfileInput=newFileInputStream(file);
    Propertiesproperties=newProperties();
    properties.loadFromXML(fileInput);
    fileInput.close();

    EnumerationenuKeys= properties.keys();
    SharedPreferences.Editoreditor= preferences.edit();
    while (enuKeys.hasMoreElements()) {
        Stringkey= (String) enuKeys.nextElement();
        Stringvalue= properties.getProperty(key);
        editor.putString(key, value);
        editor.commit();
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

NOTE You can handle only String type preferences with this code,

Solution 2:

for load shared preference from file try this

privatefunloadSharedPreferences(src: File, sharedPreferences : SharedPreferences) {
    try{
      var fileInput : FileInputStream = FileInputStream(src)
      val properties : Properties = Properties()
      properties.loadFromXML(fileInput)
      fileInput.close()
      val enuKeys = properties.keys()
      val editor = sharedPreferences.edit()
      while (enuKeys.hasMoreElements()){
        var key = enuKeys.nextElement() as String
        var value = properties.getProperty(key)
        when {
          key.contains("string",true) -> {    //in my case the key of a String contain "string"
            editor.putString(key, value)
          }
          key.contains("int", true) -> {    //in my case the key of a Int contain "int"
            editor.putInt(key, value.toInt())
          }
          key.contains("boolean", true) -> {  // //in my case the key of a Boolean contain "boolean"
            editor.putBoolean(key, value.toBoolean())
          }
        }

        editor.apply();
      }
    }catch ( e : FileNotFoundException) {
      e.printStackTrace();
    } catch ( e : IOException) {
      e.printStackTrace();
    }

  }

Post a Comment for "How To Transfer Sharedpreferences File From Internal Storage To External Storage?"