私のコードは次のとおりです。
final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean hasBeenShown = prefs.getBoolean(eulaKey, false);
OS のバージョンに応じて、常に異なる値を返します。2.2、2.3.4、3.2、4.0.3 でテスト済み - 正しい値を返します。ただし、CianogenMod 7.1 を使用した 2.3.7 のデバイス Zte ブレードの場合、結果は常に false です。getBoolean のデフォルト値だと思います。
ブール値を記述するコードは次のとおりです。
final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(eulaKey, true);
editor.commit();
誰にもアイデアはありますか?
更新: 現在のコードを以前のバージョンのコードと比較すると、コードに違いはありません。唯一の違いはマニフェストです: コードは minVersion=8 と targetVersion=8 で正常に動作します 今、私は minversion=8 と target=13 でコンパイルしています /because Admob/. 一部の API が変更された可能性がありますが、これについては何も見つかりませんでした。
解決策: -ショートカットとメニューからアプリを起動すると、異なる DefaultSharedPreferences が表示されます。私のコードから DefaultSharedPreferences を削除した後、完璧に動作します。私はただ言うことはできません: 人々はショートカットを作らないので、コードを変更しなければなりませんでした.