-
-
Save zeeshanaslam78/60b74da892480cabef7b89f12b6957f6 to your computer and use it in GitHub Desktop.
| import android.annotation.SuppressLint | |
| import android.content.Context | |
| import android.content.SharedPreferences | |
| import android.preference.PreferenceManager | |
| class PrefUtils { | |
| companion object { | |
| private var singleton: PrefUtils? = null | |
| private lateinit var preferences: SharedPreferences | |
| private lateinit var editor: SharedPreferences.Editor | |
| fun with(context: Context) : PrefUtils { | |
| if (null == singleton) | |
| singleton = Builder(context, null, -1).build() | |
| return singleton as PrefUtils | |
| } | |
| fun with(context: Context, name: String, mode: Int) : PrefUtils { | |
| if (null == singleton) | |
| singleton = Builder(context, name, mode).build() | |
| return singleton as PrefUtils | |
| } | |
| } | |
| constructor() | |
| @SuppressLint("CommitPrefEdits") | |
| constructor(context: Context) { | |
| preferences = PreferenceManager.getDefaultSharedPreferences(context) | |
| editor = preferences.edit() | |
| } | |
| @SuppressLint("CommitPrefEdits") | |
| constructor(context: Context, name: String, mode: Int) { | |
| preferences = context.getSharedPreferences(name, mode) | |
| editor = preferences.edit() | |
| } | |
| fun save(key: String, value: Boolean) { | |
| editor.putBoolean(key, value).apply() | |
| } | |
| fun save(key: String, value: Float) { | |
| editor.putFloat(key, value).apply() | |
| } | |
| fun save(key: String, value: Int) { | |
| editor.putInt(key, value).apply() | |
| } | |
| fun save(key: String, value: Long) { | |
| editor.putLong(key, value).apply() | |
| } | |
| fun save(key: String, value: String) { | |
| editor.putString(key, value).apply() | |
| } | |
| fun save(key: String, value: Set<String>) { | |
| editor.putStringSet(key, value).apply() | |
| } | |
| fun getBoolean(key: String, defValue: Boolean) : Boolean { | |
| return preferences.getBoolean(key, defValue) | |
| } | |
| fun getFloat(key: String, defValue: Float) : Float { | |
| return try { | |
| preferences.getFloat(key, defValue) | |
| } catch (ex: ClassCastException) { | |
| preferences.getString(key, defValue.toString())!!.toFloat() | |
| } | |
| } | |
| fun getInt(key: String, defValue: Int) : Int { | |
| return try { | |
| preferences.getInt(key, defValue) | |
| } catch (ex: ClassCastException) { | |
| preferences.getString(key, defValue.toString())!!.toInt() | |
| } | |
| } | |
| fun getLong(key: String, defValue: Long) : Long { | |
| return try { | |
| preferences.getLong(key, defValue) | |
| } catch (ex: ClassCastException) { | |
| preferences.getString(key, defValue.toString())!!.toLong() | |
| } | |
| } | |
| fun getString(key: String, defValue: String) : String? { | |
| return preferences.getString(key, defValue) | |
| } | |
| fun getStringSet(key: String, defValue: Set<String>) : Set<String>? { | |
| return preferences.getStringSet(key, defValue) | |
| } | |
| fun getAll(): MutableMap<String, *>? { | |
| return preferences.all | |
| } | |
| fun remove(key: String) { | |
| editor.remove(key).apply() | |
| } | |
| fun clear() { | |
| editor.clear().apply() | |
| } | |
| private class Builder(val context: Context, val name: String?, val mode: Int) { | |
| fun build() : PrefUtils { | |
| if (mode == -1 || name == null) { | |
| return PrefUtils(context) | |
| } | |
| return PrefUtils(context, name, mode) | |
| } | |
| } | |
| } |
Do you have an example, how to use this?
You can use it like this
PrefUtils.with(context).save("ANY_KEY", "Hello world!") // for saving value
PrefUtils.with(context). getString("ANY_KEY", "default value if there is any") // for getting value
PrefUtils.with(context). remove("ANY_KEY") // for removing
Do you have an example, how to use this?
You can use it like this
PrefUtils.with(context).save("ANY_KEY", "Hello world!") // for saving value
PrefUtils.with(context). getString("ANY_KEY", "default value if there is any") // for getting value
PrefUtils.with(context). remove("ANY_KEY") // for removing
Is this only possible in the MainActivity.kt? I create an MyApiAuthenticationInterceptor kotlin class and want to use the PrefUtils there, but I dont know how to pass the context? Its working in my MainActivity but not in my separate classes.
Any hints?
Do you have an example, how to use this?