android

 

Android SharedPreferencesの種類

Key-Valueペアの読み書きを行う時の候補です。

  • SharedPreferences
  • EncryptedSharedPreferences
  • Preferences DataStore

SharedPreferences

API level 1から存在するKey-Valueを保存する時のAPIです。
SharedPreferencesにはUIスレッドで安全に呼び出せないことがまれにあります。

参考

EncryptedSharedPreferences

SharedPreferencesクラスをラップしたキーと値を自動的に暗号化するJetpackライブラリです。

キーは、暗号化された状態でも検索できるように、決定性暗号化アルゴリズムを使用して暗号化されます。
値は、AES-256 GCM を使用して暗号化されます。これは非決定性です。

ただしサポートされている端末の制限があり、現在(2022/5/1)安定版の1.0.0ではAndroid 6.0(API レベル 23)以降を搭載した端末がサポートされています。

Preferences DataStore

Key-Valueペアや任意の型付きのオブジェクトを格納できるJetpackライブラリです。
DataStoreはKotlinコルーチンとフローを使用して、データを非同期的で扱うことができます。

SharedPreferencesとDataStoreの違い

出典:https://developer.android.com/codelabs/android-preferences-datastore#3

ファイル構造

  • SharedPreferences

  • EncryptedSharedPreferences

  • Preferences DataStore

SharedPreferencesの保存場所の確認方法はこちら

読み書きの仕方

  • SharedPreferences

    val normalPreferences = context.getSharedPreferences(NORMAL_FILE_NAME, Context.MODE_PRIVATE)
    // Read
    normalPreferences.getString("normal-preferences-key", "Nothing")
    // Write
    normalPreferences
    .edit()
    .putString("normal-preferences-key", "normal-preferences-value")
    .apply()
  • EncryptedSharedPreferences

    val encryptedPreferences = EncryptedSharedPreferences.create(
    ENCRYPTED_FILE_NAME,
    mainKeyAlias,
    context,
    EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
    EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
    )
    // Read
    encryptedPreferences.getString("encrypted-preferences-key", "Nothing")
    // Write
    encryptedPreferences
    .edit()
    .putString("encrypted-preferences-key", "encrypted-preferences-value")
    .apply()
  • Preferences DataStore

    val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
    val PREFERENCES_DATA_STORE_KEY = stringPreferencesKey("preferences-dataStore-key")
    // Read
    context.dataStore.data
    .catch { exception ->
        if (exception is IOException) {
            emit(emptyPreferences())
        } else {
            throw exception
        }
    }
    .map { preferences ->
        preferences[PREFERENCES_DATA_STORE_KEY] ?: ""
    }
    // Write
    context.dataStore.edit { settings ->
    settings[PREFERENCES_DATA_STORE_KEY] = "preferences-dataStore-value"
    }

Android SharedPreferencesの確認方法前のページ

ハッシュアルゴリズムとソルト次のページ

関連記事

  1. android

    【最短!】パッケージ名の変更方法

    どうも、フリーランスエンジニアのyoshikiです。&…

  2. android

    ハッシュアルゴリズムとソルト

    ハッシュについて元データに対して後述するアルゴリズムを使って、単体で…

  3. android

    Android 公開鍵暗号方式と共通鍵暗号方式を使った暗号化・復号化

    公開鍵暗号方式暗号化に公開鍵、復号に秘密鍵を使う暗号方式アプリ側…

  4. android

    Android SharedPreferencesの確認方法

    androidアプリでデータを永続化する時に使うSharedPrefe…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

  1. LINE Bot

    【2018年 LINE Bot 作り方】GASで支出管理Botを作ってみた
  2. android

    Android SharedPreferencesの確認方法
  3. android

    Android SharedPreferencesの種類
  4. LINE Bot

    【LINE Bot 作り方】GASでLINE Botを作るための準備
  5. android

    ハッシュアルゴリズムとソルト
PAGE TOP