2015-01-13 2 views
2

Как скопировать sharedpreferences во внешнее хранилище xml format, поэтому позже можно было бы предоставить общие настройки.Как передать файл sharedpreferences из внутреннего хранилища во внешнее хранилище?

Пробовал читать sharedpreferences и сохранить как string в файл, созданный JSON тип из string, но мне нужно xml. Мысль обходить через внутреннее хранилище и копию файла приложения и помещать его во внешнее хранилище, но это может быть слишком сложным.

Просто действительно хотелось бы знать, есть ли простой и разумный способ передачи `sharedpreferences.

ответ

0

Используйте этот код,

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(); 
} 

и retrive использовать это,

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(); 
} 

ПРИМЕЧАНИЕ Вы можете обрабатывать только предпочтения типа Строка с этим кодом,

+0

Он работает, но теперь Мне придется перепроектировать другие части синтаксического анализа кода на целочисленный тип, потому что все это строка. – Insomnia

+0

Несомненно, пожалуйста, не забудьте поделиться этим с нами, –

Смежные вопросы