Preference(5)-SharedPreferencesオブジェクトを使ってPreferenceデータにアクセス


SharedPreferencesオブジェクトを取得して、コードでPreferenceデータを操作する事ができる。

SharedPreferencesオブジェクトの取得と、ファイル名とアクセスモード

SharedPreferencesオブジェクトを取得するには、以下の3つのメソッドのいずれかを使う。

どのメソッドを使うかによって、ファイル名とアクセスモードが異なる。

  • PreferenceManager.getDefaultSharedPreferences(Context context)
    アプリケーションのデフォルトのSharedPreferencesオブジェクトを取得する。
    設定データが保存されるxmlファイルのファイル名は、 「プロジェクトを作成する時に指定したパッケージ名_preference.xml」となる。
    ファイルのアクセスモードは常にMODE_PRIVATEとなる。
  • Activity#getPreferences(int mode)
    ファイル名は「Activityのクラス名.xml」となる。
    引数modeには、以下のようなファイルのアクセスモードを指定する。
    • MODE_PRIVATE
      他のアプリケーションからのアクセス不可。
    • MODE_WORLD_READABLE
      他のアプリケーションからの読込み可。
    • MODE_WORLD_WRITEABLE
      他のアプリケーションからの書込み可。
    MODE_WORLD_READABLEとMODE_WORLD_WRITEABLEを|で連結して同時に指定できる。
  • ContextWrapper#getSharedPreferences(String name, int mode)
    ファイル名は「引数nameで指定した値.xml」となる。
    引数modeによりアクセスモードを指定する。
    ActivityはContextWrapperクラスを継承しているので、Activityクラスよりこのメソッドを操作できる。

以下のプログラムは、いろいろな方法でSharedPreferencesオブジェクトを取得して、 設定データを保存するプログラムの例です。

リスト14-いろいろな方法でSharedPreferencesオブジェクトを取得

このプログラムを実行した後、DDMSパースペクティブのファイルエクスプローラにて Preferenceファイルを確認してみると、以下のように表示される。

引数modeの指定により、アクセス権が変化しているのがわかる。

 

 

Preferenceファイルを他のアプリケーションから読込む方法については、「他のアプリケーションのデータを利用する」 を参照。

PreferenceActivityの使用するxmlファイルのファイル名を変更する。

PreferenceActivityが使用するSharedPreferencesオブジェクトは、 PreferenceActivity#getPreferenceScreen().getSharedPreferences()メソッドにより取得できる。

デフォルトではこのSharedPreferencesオブジェクトは、 PreferenceManager.getDefaultSharedPreferencesメソッドで取得した DefaultのSharedPreferencesオブジェクトが使われる。

このため、設定データを保存するxmlファイルのファイル名は固定になってしまう。

このファイル名を更するには、以下のようにする。

リスト15-xmlファイル名の変更

ここでは、xxx.xmlというファイルが使われる。

Preferenceデータの保存

コードを使ってPreferenceデータを保存するには、SharedPreferences.Editorオブジェクトを使用する。

SharedPreferences.Editorクラスには、以下のように保存するデータの型によりそれぞれ専用のputメソッドが用意されている。

putメソッドの引数には、設定データのキー値を指定する。

以下に、異なるデータ型の設定データを保存する例を示す。

リスト16-データの保存

SharedPreferences.Editorクラスには他にもclearメソッド(全削除),removeメソッド(特定のkeyを削除)がある。

Preferenceデータの読込

SharedPreferencesクラスには、読込むデータの型に応じたgetメソッドが用意されている。

getメソッドの第1引数にはキー値を、第2引数にはそのキーが存在しない場合の戻り値を、指定する。

以下に、異なるデータ型の設定データを読込む例を示す。

リスト17-データの読込み

また、SharedPreferencesクラスのgetAllメソッドを使用すると、保存されているすべてのキーと値を取得する事ができる。

以下にその例を示す。

リスト18-すべてのデータの読込み

 

ページのトップへ戻る