Skip to main content

Working with Android Shared Preferences

          Shared preferences allows android application to save data in the form of "Key-Value" pair, shared preferences will be an , XML file which will be stored in applications internal storage space under "shared_prefs" folder under data/data/(package name of the application).

Shared Preferences won't clear data after "force close" of an application, it will get cleared only in case of user clears the application data (under settings -> apps -> clear Data) or uninstall an application.

Shared preferences can be edited using SharedPreferences.Editor class. APIs to access shared preference below,

  • getDefaultSharedPreferences()  :- Return default shared preference file which is used by PrefrenceManager in the given context.
  • getSharedPreferences(String my_prf_name, int mode) :- Returns shared preference file of the given name.
Below are  sample code snippets,

1. Saving data in to the shared preferences,
//Retrieve shared preference file obj by giving preference file name,
SharedPreferences sp = mContext.getSharedPreferences(my_prf_name, Context.MODE_PRIVATE);
// create shared pref editor object,
SharedPreferences.Editor editor = sp.edit();
editor.putBoolean("isLoggedInClient",1);  // put values to save
editor.commit();

2. Retrieving data from Shared preferences,

SharedPreferences sp = mContext.getSharedPreferences(my_prf_name, Context.MODE_PRIVATE);
sp.getBoolean("isLoggedInClient", false);  // "false" is the default value to return in case of key not found in shared pref

3. Retrieving all data from shared preferences,

SharedPreferences sp = mContext.getSharedPreferences(my_prf_name, Context.MODE_PRIVATE);
Map allEntries = sp.getAll();  // returns Map obj
for (Map.Entry entry : allEntries.entrySet()) {
 Log.d("shared Prefrence values", "KEY :- "+entry.getKey() + "Value :-" + entry.getValue().toString());
}

Happy Coding!!!

Comments

Popular posts from this blog

Adding Call log entries in Native Call Logs

While adding call logs we can set number in CallLog.Calls.NUMBER field , same for date  and duration. CallLog.Calls.CACHED_NAME will be filled with the cached name in case if the number is already saved in Contacts database. ContentValues values = new ContentValues(); values.put(CallLog.Calls.NUMBER, number); values.put(CallLog.Calls.DATE, System.currentTimeMillis()); values.put(CallLog.Calls.DURATION, 0); values.put(CallLog.Calls.TYPE, CallLog.Calls.OUTGOING_TYPE); //Type of call Outgoing/Incoming/Missed etc values.put(CallLog.Calls.NEW, 1); values.put(CallLog.Calls.CACHED_NAME, ""); values.put(CACHED_NUMBER_TYPE, 0); values.put(CACHED_NUMBER_LABEL, ""); this.getContentResolver().insert(CallLog.Calls.CONTENT_URI, values); Below Permissions are required to add call logs , add it in Manifest file, <uses-permission android:name="android.permission.WRITE_CALL_LOG"></uses-permission> <uses-permission android:name="android.perm...