Я создаю проект, в котором у меня есть экран входа в систему, который используется для входа пользователя в приложение . Этот экран входа в систему должен отображаться только в первый раз, поэтому пользователь может заполнить его и войти в систему, но когда пользователь открывает приложение во второй раз, приложение должно показать main.activity. Как использовать общие настройки для этого?Один раз Войти
ответ
Сохранить т он информацию для входа пользователя в SharedPeference:
SharedPreferences preferences = getSharedPreferences("preference",MODE_PRIVATE);
preferences.edit().putBoolean("LoggedIn", true).apply();
И сохранить логическое «LoggedIn» ложь, когда пользователь выходит из системы:
preferences.edit().putBoolean("LoggedIn", false).apply();
В SplashActivity получить значение из sharedprefence и вызвать соответствующие мероприятия :
boolean loggedIn = preferences.getBoolean("LoggedIn", false);
if(loggedIn){
// call main activity
}else{
//call login activity
}
Прежде всего, проверьте, был ли ранее зарегистрирован пользователь. Использование SharedPreferences:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
Boolean loggedIn = prefs.getBoolean("loggedIn", false);
if(loggedIn != null && loggedIn)
{
//open main activity
}else{
//open login page
}
и когда пользователь входит в систему, сохранить информацию для входа в SharedPreferences:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
prefs.edit().putBoolean("loggedIn", true);
То есть все, что вам нужно.
что (getActivity()) показывает ошибку – RushDroid
@ Rushabh042, в каком классе вы пытаетесь написать этот код? Вы работаете или фрагментируете? – yrazlik
@ Rushabh042, если вы находитесь в действии, вы можете просто использовать PreferenceManager.getDefaultSharedPreferences (getApplicationContext()); – yrazlik
SIF вы хотите сделать это с общими предпочтениями, когда пользователь войти в приложение привилегированной акции ..
SharedPreferences prefs = getSharedPreferences("MyApp", MODE_PRIVATE);
prefs.edit().putBoolean("staylogin", true).commit();
И если вы хотите выйти на бутон мыши установите предпочтение ..
SharedPreferences prefs = getSharedPreferences("MyApp", MODE_PRIVATE);
prefs.edit().putBoolean("staylogin", false).commit();
для того, чтобы начать свое приложение, не войти в экран можно использовать экранную заставку перед другими и проверить общее предпочтение ...
SharedPreferences prefs = getSharedPreferences("MyApp", MODE_PRIVATE);
Boolean state = prefs.getString("staylogin", false);
if (state) {
//Start Main Activity
} else {
//Start Log in activity
}
он показывает ошибку в (состояние == 0) Почему[email protected] Mitropoulos – RushDroid
Да, я ошибся, потому что я использую prefs.getString ("staylogin", "UNKNOWN") и помещаю его в значение int ... Я редактирую свой ответ .. спасибо за ваш комментарий. –
Почему я всегда получал состояние 1 в вашем коде? @Nikos Mitropoulos – RushDroid
Попробуйте это, рабочий код
в вашей странице входа
// Session Manager Class
SessionManagerFor_Signin session;
private EditText EMAIL, PASSWORD;
private Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.sign_in);
// Session Manager
session = new SessionManagerFor_Signin(getApplicationContext());
login = (Button) findViewById(R.id.loginbutton);
EMAIL = (EditText) findViewById(R.id.EmaileditText1);
PASSWORD = (EditText) findViewById(R.id.passwordeditText2);
login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.loginbutton:
email = EMAIL.getText().toString();
password = PASSWORD.getText().toString();
if (email.equals("") || password.equals(""))
{
// user didn't entered user name or password
// Show alert asking him to enter the details
alert.showAlertDialog(sign_in.this, "Login Failed...","Please Enter Email and Password", false);
}
else
{
// fetch the Password form database for respective Email
storedPassword = DB.getSinlgeEntry(email);
if (password.equals(storedPassword))
{
session.createLoginSession(email, password);
Toast.makeText(sign_in.this, "Login Successfull",Toast.LENGTH_LONG).show();
Intent intent = new Intent(sign_in.this, Page1_Landing.class);
startActivity(intent);
finish();
}
}
break;
}
SessionManagerFor_Signin.java
public class SessionManagerFor_Signin
{
// Shared Preferences
SharedPreferences pref;
// Editor for Shared preferences
Editor editor;
// Context
Context _context;
// Shared pref mode
int PRIVATE_MODE = 0;
// Sharedpref file name
private static final String PREF_NAME = "SharedPref";
// All Shared Preferences Keys
private static final String IS_LOGIN = "IsLoggedIn";
// User name (make variable public to access from outside)
public static final String KEY_EMAILID = "email";
// Email address (make variable public to access from outside)
public static final String KEY_PASSWORD = "password";
// Constructor
public SessionManagerFor_Signin(Context context)
{
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
// Create login session
public void createLoginSession(String email, String password)
{
// Storing login value as TRUE
editor.putBoolean(IS_LOGIN, true);
// Storing name in pref
editor.putString(KEY_EMAILID, email);
// Storing email in pref
editor.putString(KEY_PASSWORD, password);
// commit changes
editor.commit();
}
/**
* Check login method wil check user login status
* If false it will redirect user to login page
* Else won't do anything
* */
public void checkLogin()
{
// Check login status
if(this.isLoggedIn())
{
Intent intent = new Intent(_context,Page1_Landing.class);
// Closing all the Activities
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add new Flag to start new Activity
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//Toast.makeText(getApplicationContext(),email, Toast.LENGTH_LONG).show();
_context.startActivity(intent);
}
else
{
// user is not logged in redirect him to Login Activity
Intent i = new Intent(_context, MainActivity.class);
// Closing all the Activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Add new Flag to start new Activity
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Staring Login Activity
_context.startActivity(i);
}
}
/**
* Get stored session data
* */
public HashMap<String, String> getUserDetails(){
HashMap<String, String> user = new HashMap<String, String>();
// user mail
user.put(KEY_EMAILID, pref.getString(KEY_EMAILID, null));
// user password
user.put(KEY_PASSWORD, pref.getString(KEY_PASSWORD, null));
// return user
return user;
}
/**
* Clear session details
* */
public void logoutUser()
{
// Clearing all data from Shared Preferences
editor.clear();
editor.commit();
Intent intent = new Intent(_context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
_context.startActivity(intent);
}
/**
* Quick check for login
* **/
// Get Login State
public boolean isLoggedIn()
{
return pref.getBoolean(IS_LOGIN, false);
}
}
Далее вы хотите Ссылка Найти ссылку ниже
- 1. Один раз Войти с Jquerymobile
- 2. Войти Google \ YouTube только один раз
- 3. Facebook Войти Диалог появляется только один раз
- 4. VB.net GetAsyncKeyState войти ключ только один раз
- 5. Facebook Войти работает только один раз
- 6. IIS6 SSL Config - Придется войти дважды (один раз: 80, один раз: 443)
- 7. Один пользователь за раз
- 8. При помощи кнопки Войти Reactivecocoa срабатывает только один раз
- 9. FOSUserBundle Могу ли я войти только один раз
- 10. Как войти только один раз, а затем запустить множество сценариев
- 11. Как войти и запросить расширенное разрешение за один раз?
- 12. JQuery только один раз выполняется один раз
- 13. Один сигнал за один раз
- 14. Один UIButton за один раз
- 15. Один флажок за один раз
- 16. Как сделать только один логин пользователя за один раз
- 17. verifyIdToken работает один раз и сбой в другой раз
- 18. Как разрешить пользователю входить только один раз за раз?
- 19. - один раз только контроллер работает не один раз в Jmeter?
- 20. Java Timer только один раз один раз (только для сервера)
- 21. jQuery Tools alert работает один раз (но только один раз)
- 22. Как вызвать функцию один раз, и только один раз ...?
- 23. Стоп-цикл один раз, если значение выполняется один раз
- 24. заполнить список один раз
- 25. Javascript нажмите один раз
- 26. Петля только один раз
- 27. Отправить форму один раз
- 28. «Один раз», если условие
- 29. Добавьте один раз. Новичок
- 30. PHP требуется один раз
используют эту ссылку, демо также там, http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/ – Mano