Creating a simple Android app that uses Encrypted Preferences with a Singleton architecture involves several steps. Below is a guide to help you set up this app. We'll use Kotlin for this example.
Step 1: Set Up Your Android Project
- Open Android Studio and create a new project.
- Select an Empty Activity template.
- Name your project and choose Kotlin as the programming language.
Step 2: Add Dependencies
In your build.gradle
(app level), add the dependencies for Encrypted Preferences:
dependencies {
implementation 'androidx.security:security-crypto:1.1.0-alpha03'
// Other dependencies
}
Step 3: Create the EncryptedPreferencesManager Singleton
Create a Kotlin file EncryptedPreferencesManager.kt
in a suitable package (e.g., com.example.myapp
).
package com.example.myapp
import android.content.Context
import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKeys
class EncryptedPreferencesManager private constructor(context: Context) {
private val sharedPreferences = EncryptedSharedPreferences.create(
"my_encrypted_prefs",
MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC),
context,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
companion object {
@Volatile private var INSTANCE: EncryptedPreferencesManager? = null
fun getInstance(context: Context): EncryptedPreferencesManager {
return INSTANCE ?: synchronized(this) {
INSTANCE ?: EncryptedPreferencesManager(context).also { INSTANCE = it }
}
}
}
fun putString(key: String, value: String) {
sharedPreferences.edit().putString(key, value).apply()
}
fun getString(key: String, defaultValue: String? = null): String? {
return sharedPreferences.getString(key, defaultValue)
}
// Add other methods as needed
}
Step 4: Use EncryptedPreferencesManager in Your Activity
In your MainActivity.kt
, you can use the EncryptedPreferencesManager
to save and retrieve encrypted preferences.
package com.example.myapp
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val encryptedPreferences = EncryptedPreferencesManager.getInstance(this)
// Save a value
encryptedPreferences.putString("example_key", "example_value")
// Retrieve a value
val value = encryptedPreferences.getString("example_key")
println("Retrieved value: $value")
}
}
Comments
Post a Comment