ورود

View Full Version : پشتیبان گیری از Shared Prefrences



barnamenevisjavan
پنج شنبه 29 خرداد 1393, 11:12 صبح
سلام میخوام از Shared Prefrences توی sdcard بکاپ بگیرم این کد رو توی سایت پیدا کردم میشه راهنمایی کنید چطوری استفاده کنم؟
private boolean saveSharedPreferencesToFile(File dst) {
boolean res = false;
ObjectOutputStream output = null;
try {
output = new ObjectOutputStream(new FileOutputStream(dst));
SharedPreferences pref =
getSharedPreferences(prefName, MODE_PRIVATE);
output.writeObject(pref.getAll());


res = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (output != null) {
output.flush();
output.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return res;
}


@SuppressWarnings({ "unchecked" })
private boolean loadSharedPreferencesFromFile(File src) {
boolean res = false;
ObjectInputStream input = null;
try {
input = new ObjectInputStream(new FileInputStream(src));
Editor prefEdit = getSharedPreferences(prefName, MODE_PRIVATE).edit();
prefEdit.clear();
Map<String, ?> entries = (Map<String, ?>) input.readObject();
for (Entry<String, ?> entry : entries.entrySet()) {
Object v = entry.getValue();
String key = entry.getKey();


if (v instanceof Boolean)
prefEdit.putBoolean(key, ((Boolean) v).booleanValue());
else if (v instanceof Float)
prefEdit.putFloat(key, ((Float) v).floatValue());
else if (v instanceof Integer)
prefEdit.putInt(key, ((Integer) v).intValue());
else if (v instanceof Long)
prefEdit.putLong(key, ((Long) v).longValue());
else if (v instanceof String)
prefEdit.putString(key, ((String) v));
}
prefEdit.commit();
res = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally {
try {
if (input != null) {
input.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return res;
}

barnamenevisjavan
جمعه 30 خرداد 1393, 16:05 عصر
راهنمایی نیست؟

dasssnj
شنبه 31 خرداد 1393, 06:30 صبح
فایل xml مزبوط به تنظیمات برنامتو از پوشه ی دیتای برنامت کپی کن یه جای دیگه
هر وقت خواستی برش گردون
پوشه ی دیتا : data/data/<YOUR-PACKAGE-NAME>/shared_prefs

barnamenevisjavan
شنبه 31 خرداد 1393, 11:06 صبح
فایل xml مزبوط به تنظیمات برنامتو از پوشه ی دیتای برنامت کپی کن یه جای دیگه
هر وقت خواستی برش گردون
پوشه ی دیتا : data/data/<YOUR-PACKAGE-NAME>/shared_prefs
نیاز به دسترسی روت نمیخواد؟

dasssnj
شنبه 31 خرداد 1393, 12:38 عصر
نه دوست عزیز.
شما فقط به پوشه ی برنامه ی خودتون دسترسی دارید نه برنامه های دیگه. برای دسترسی به پوشه ی دیگر برنامه ها به روت نیاز هست.
با خیال راحت فایل پرفرنس را توی مموری گوشی کپی کنید و هر وقت خواستید برگردونید. البته مجوز دسترسی به sdcard را هم توی مانیفست برنامه اضافه کنید.