私のコードは:
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();
誰にもアイデアはありますか?
更新:現在のコードと以前のバージョンのコードを比較します-コードに違いはありません。マニフェストにあるのは違いだけです。コードは、Ok with minVersion = 8 and targetVersion = 8で動作します。現在、Minversion = 8およびtarget = 13でコンパイルしています。Admob/のため。しかし、これには何も見つかりませんでした。
解決策:-ショートカットとメニューからアプリを起動すると、異なるDefaultSharedPreferencesが表示されます。 DefaultSharedPreferencesをコードから削除した後、完全に機能します。ただ言うことはできません。人々はショートカットを作らないので、コードを変更しなければなりませんでした。
この方法で試してください:
final String eulaKey = "mykey";
Context mContext = getApplicationContext();
mPrefs = mContext.getSharedPreferences("myAppPrefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean(eulaKey, true);
editor.commit();
その場合、独自の設定ファイル名(myAppPrefs)を指定して、そのファイルへのアクセス許可を制御できます。その他の動作モードは次のとおりです。