Patrons
Let your patron do the work.
A Patron is a preference wrapper. Come also with an encryption system.
Features
Use the adequate patron for the preference value type you would like to store.
Patrons handle all types handled by shared preferences:
- boolean
- float
- float
- int
- String
- StringSet
Patrons also provide an encrypted version of the shared preferences. Use patrons-conceal
to encrypt your preference values.
Installation
Step 1. Add the JitPack repository to your build file
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation 'com.github.prolificinteractive.patrons:patron:${patronsVersion}'
// If you want patrons with encryption of your shared preferences
implementation 'com.github.prolificinteractive.patrons:patron-conceal:${patronsVersion}'
}
Usage
A default patron exists for all shared preferences types.
Boolean
val boolPref: Preference<Boolean> = BooleanPreference(prefs, "key")
Float
val floatPref: Preference<Float> = FloatPreference(prefs, "key")
Integer
val intPref: Preference<Integer> = IntPreference(prefs, "key")
Long
val longPref: Preference<Long> = LongPreference(prefs, "key")
String
val stringPref: Preference<String> = StringPreference(prefs, "key")
String Set
val stringSetPref: Preference<Set<String>> = StringSetPreference(prefs, "key")
Conceal
Init Conceal in your application class:
import com.facebook.soloader.SoLoader;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, false);
}
}
Encryption
SharedPreferences Backed Keychain
val prefs = ConcealSharedPreferences(context)
Keystore Backed Keychain
By default, preference's key is NOT encrypted but the behaviour can be customized by passing your own custom KeyEncryption
val defaultPref = PreferenceManager.getDefaultSharedPreferences(context)
val concealedPrefs = ConcealSharedPreferences(
this,
defaultPref,
NoKeyEncryption(),
ConcealEncryption(
context,
"conceal_encryption",
AndroidConceal
.get()
.createDefaultCrypto(KeystoreBackedKeychain(context, defaultPref))
)
)
Proguard
TODO
Contributing to Patrons
To report a bug or enhancement request, feel free to file an issue under the respective heading.
If you wish to contribute to the project, fork this repo and submit a pull request. Code contributions should follow the standards specified in the Prolific Android Style Guide.
License
Copyright (c) 2018 Prolific Interactive
Patrons is maintained and sponsored by Prolific Interactive. It may be redistributed under the terms specified in the LICENSE file.