SharePreferenceの使用

ァ.sharePreferenceの紹介

ユーザー設定するパラメーターを保存するために、sharePreferenceを使用する。

ィ.sharePreferenceにファイルを作成するモードは4種類がある

  • MODE_PRIVATE:デフォルトモード、このファイルを作成するアプリのみ使用可能
  • MODE_APPEND:ファイルは存在する場合、データはファイルの末尾に添加する
  • MODE_WORLD_READABL:作成するファイルの読むことを許可する
  • MODE_WORLD_WRITEABLE:作成するファイルの書くことを許可する

ウ.sharePreferenceファイルを保存するパス(data/data/アプリのバケッジ名/shared_prefs/○○.xml)

ェ.書き込みデータ

ファイルにデータ保存するタイプは「Map」と同じだ、保存するデータの並びがない、
ただし、sharePreferenceは簡単タイプのデータのみに保存を提供しました。

1
2
3
4
5
6
//PREF_FILE_NAMEはファイル名、MODE_WORLD_WRITEABLEはファイル作成モード
SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, Context.MODE_WORLD_WRITEABLE);  
SharedPreferences.Editor editor = preferences.edit();  
editor.putInt(key, value);
//省略
editor.commit();  

例:

1
2
3
4
SharedPreferences preferences = getSharedPreferences("test", Context.MODE_WORLD_WRITEABLE);  
SharedPreferences.Editor editor = preferences.edit();  
editor.putInt("storedInt", 10);
editor.commit();  

以下のファイルを作成する
test.xml

1
2
3
4
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>  
<map>  
<int name="storedInt">10</int>  
</map>  

ォ.読み込みデータ

1
2
SharedPreferences preferences  = getSharedPreferences(PREF_FILE_NAME, Context.MODE_WORLD_READABLE)  
int storedPreference = preferences.getInt("storedInt", 0);  

ヵ.sharePreferenceファイルのモードは「MODE_WORLD_READABL」または「MODE_WORLD_WRITEABLE」の時、別のアプリはアクセス可能とする

以下のアクセス方法を使う

1
2
3
4
//PREF_PACKAGE_NAMEはバッケージ名
Context otherAppsContext = createPackageContext(PREF_PACKAGE_NAME, Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = otherAppsContext.getSharedPreferences(PREF_FILE_NAME, Context.MODE_WORLD_READABLE);
int storedPreference = preferences.getInt("storedInt", 0);