少量のバイナリ データを文字列として SharedPreferences に書き込もうとしています。ここでエンコーディングをひどく誤解しているかもしれませんが、これが私がやろうとしていることです:
String str = new String("hi there!".getBytes(), "ISO-8859-1");
SharedPreferences p = context.getSharedPreferences("foo", MODE_PRIVATE);
Editor e = p.edit();
e.putString("string", str);
e.putBoolean("worked", true);
e.commit();
... later on after an app restart...
// the shared prefs file will be empty upon the next app start:
SharedPreferences p = context.getSharedPreferences("foo", MODE_PRIVATE);
Log.d(TAG, "String value present?: " + p.getString("string", null));
Log.d(TAG, "Boolean flag present?: " + p.getBoolean("worked", false));
commit() 呼び出しは true を返し、すべて問題ないようです。次にこのデモ アプリを起動すると、この共有設定インスタンスの内容が読み込まれますが、中身は完全に空です。「ISO-8859-1」エンコーディングを使用しない場合、すべてが期待どおりに機能し、共有設定ファイルにキー値が含まれています。
共有設定は、そのエンコーディングを使用する文字列で機能しませんか?
ありがとう