A shared preferences allow encryption (AES & Vigenere Ciphers) and any type data (handle null & invalid types)
Step 1 : Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}Step 2 : Add the dependency:
dependencies {
implementation 'com.github.SudoDios:PrefLock:1.3.1'
}//config your PrefLockval prefLockConf =PrefLockConf(
context =this,
baseKey ="yourAnyKeyHere",
/*not required*/ encryptKeys =true,
/*not required*/ name ="custom shared preferences name",
/*not required (default is AES)*/ cipher =VigenereCipher()
)
//init PrefLock at startup like on Application classPrefLock.init(prefLockConf)
//now is ready to use//save any type of dataPrefLock.set("key", /*string*/"Sudodios")
PrefLock.set("key", /*int*/20)
PrefLock.set("key", /*float*/20f)
PrefLock.set("key", /*double*/20.0)
PrefLock.set("key", /*long*/20L)
PrefLock.set("key", /*boolean*/true)
PrefLock.set("key", /*arraylists any type*/ArrayList<String>())
PrefLock.set("key", /*maps any type*/ mutableMapOf<String,String>())
PrefLock.set("key", /*custom objects ex.( data classes)*/User())
PrefLock.set("key", /*your data*/AnyDataHere)//get saved keys by generic types//default values not required to pass (is null)PrefLock.get("key", /*type of get*/String::class.java, /*default value*/"")
PrefLock.get("key", /*type of get*/Float::class.java, /*default value*/0f)
PrefLock.get("key", /*type of get*/Double::class.java, /*default value*/0.0)
PrefLock.get("key", /*type of get*/Long::class.java, /*default value*/0L)
PrefLock.get("key", /*type of get*/Boolean::class.java, /*default value*/false)
PrefLock.get("key", /*type of get*/ArrayList<String>().javaClass, /*default value*/arrayListOf())
PrefLock.get("key", /*type of get*/HashMap<String,String>().javaClass, /*default value*/mutableMapOf())
PrefLock.get("key", /*type of get*/User::class.java, /*default value*/User())
PrefLock.get("key", /*your data type*/, /*default of data type*/)//remove keyPrefLock.remove("key")//check contains keyPrefLock.contains("key")classCustomCipher : CipherAlgorithm {
/* * pass this class to PrefLockConf * */init {
//initiate your cipher
}
overridefunencrypt(baseKey:String, value:String): String {
return"your cipher encrypted"
}
overridefundecrypt(baseKey:String, encrypted:String): String {
return"your cipher decrypted"
}
}- Support live data