私は一種の自動ログインを実装しようとしています。私のログインアクティビティで、私はこれ持っている:私はエミュレータ上でこれをテストすることができました、と私は、Androidデバイスモニタに表示するSharedPreferences
ファイルの内容を取得するように見えるが、すべてのことができないSharedPreferencesの値は常にtrueを返しますか?
sharedPref = context.getSharedPreferences("data", Context.MODE_PRIVATE);
User.setUid(sharedPref.getInt("UID", 1));
Boolean al = sharedPref.getBoolean("AUTOLOGIN", false);
...
if (al) {
Log.i("AUTOLOGIN", "Go!");
Gui.createAlert(context, context.getString(R.string.loading));
Intent i = new Intent(context, CityActivity.class);
context.startActivity(i);
}
...
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
Ajax.AjaxListener callback = new Ajax.AjaxListener() {
int uid = Integer.parseInt(userInfo.optString("user_id", "1"));
String sid = user.optString("sid", "");
String k = json.optString("k", "");
Boolean al = autoLogin.isChecked();
SharedPreferences.Editor e = sharedPref.edit();
e.putInt("UID", uid).putBoolean("AUTOLOGIN", al).putString("SID", sid).apply();
Gui.createAlert(context, context.getString(R.string.loading));
Intent i = new Intent(context, CityActivity.class);
};
});
アプリが読み込まれる時間、それは自動ログインルーチンを実行します。エミュレータを完全にシャットダウンしてすべてを再起動しても、自動ログインフラグは保持されているようです。私はJava/Androidプログラミングにはまだまだ慣れていませんが、PHPとJavaScriptのバックグラウンドから来ています。私はなぜ、AUTOLOGIN
SharedPreference
キーがチェックされたときに常にtrue
を返すように見えるのかというだけで困っています。 SharedPreferences
で自動ログインを実装する例はありますか?
私はデータベースを元来使用しようとしましたが、使用の難しさと現在必要とされる最小限のデータのためにアイデアを廃止しました。
sharedprefをコミットします。 –
あなたはアプリケーションのデータをアンインストールまたはクリアする必要がありますし、あなたの好みだけがクリアになります –
あなたのアプリでいくつかのログアウトのコンセプトを持っているなら 'SharedPreferences.Editor editor = sharedPreferences.edit(); editor.clear();'これを使ってSharedPreferencesの内容が削除され、自動ログインが停止されます。 – SachinSarawgi