5

可能な限り標準の「Java 方式」で同じコードを使用して、PC または Android フォンで実行されているスケッチからユーザー設定を保存したいと思います。

私の目的の理想的な候補は、 java.util.prefs.Preferences クラスのようです。そこで、処理中に動作しているかどうかを確認するための小さなテスト スクリプトを作成しました。

String prId = "counter";
Preferences prefs = Preferences.userNodeForPackage(this.getClass());
int counter = prefs.getInt(prId, 0);

println(counter);
prefs.putInt(prId, 1+counter);

このプログラムは、PC 上で実行されるたびに増加する数値を出力します。Android では、デフォルト値 (0) が常に表示されます。これを Android で動作させるために必要な追加の手順はありますか? 要求される許可? 両方のプラットフォームで名前と値のペアを保存するための代替手段はありますか?

Obs.: 「WRITE_EXTERNAL_STORAGE」パーミッションはすでに有効になっています

4

2 に答える 2

0

Android では、設定を保存するための推奨される方法は、SharedPreferences. 同等のコードは次のようになります。

String prId = "counter";
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
int counter = prefs.getInt(prId,0);    // Get int, default is 0

SharedPreferences.Editor prefsEditor = prefs.edit();
prefsEditor.putInt(prId, counter++);    // Put counter back
prefsEditor.commit();    //Don't forget to commit the changes

java.util.prefs.PreferencesなぜAndroidで失敗するのか正確にはわかりません。Activityその理由は、現在のアプリケーションまたはアプリケーションが破棄された後にデータが削除されるためだと思われます。

ディレクトリ構造はプラットフォームごとに異なるため、1 つの同じ方法を使用するだけで設定を取得するのは困難です。たとえば、データは/.java/.userPrefs/**yourpacakgename**/prefs.xmlAndroid では に保存され、Windows ではレジストリに保存され~/Library/Preferences/**yourpacakgename**/prefs.xml、Mac OS X では に保存されます。また、Preferences.userRoot()アプリケーションがアクセスできないため、Androidでは使用できませんroot

于 2013-03-07T19:43:51.493 に答える