2015-06-05 2 views
-1

Я создаю проект, в котором у меня есть экран входа в систему, который используется для входа пользователя в приложение . Этот экран входа в систему должен отображаться только в первый раз, поэтому пользователь может заполнить его и войти в систему, но когда пользователь открывает приложение во второй раз, приложение должно показать main.activity. Как использовать общие настройки для этого?Один раз Войти

+2

используют эту ссылку, демо также там, http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/ – Mano

ответ

1

Сохранить т он информацию для входа пользователя в 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 
} 
+0

как это работает? @madhuri HR – RushDroid

+0

Это сохраняет статус входа пользователя, даже когда приложение закрыто и открыто. Следовательно, вы можете вызвать соответствующее действие при открытии приложения. @ Rushabh042 –

+0

Спасибо так много его работы .. @ madhuri H R – RushDroid

1

Прежде всего, проверьте, был ли ранее зарегистрирован пользователь. Использование 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); 

То есть все, что вам нужно.

+0

что (getActivity()) показывает ошибку – RushDroid

+0

@ Rushabh042, в каком классе вы пытаетесь написать этот код? Вы работаете или фрагментируете? – yrazlik

+0

@ Rushabh042, если вы находитесь в действии, вы можете просто использовать PreferenceManager.getDefaultSharedPreferences (getApplicationContext()); – yrazlik

0

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

он показывает ошибку в (состояние == 0) Почему[email protected] Mitropoulos – RushDroid

+0

Да, я ошибся, потому что я использую prefs.getString ("staylogin", "UNKNOWN") и помещаю его в значение int ... Я редактирую свой ответ .. спасибо за ваш комментарий. –

+0

Почему я всегда получал состояние 1 в вашем коде? @Nikos Mitropoulos – RushDroid

0

Попробуйте это, рабочий код

в вашей странице входа

// 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); 
    } 
} 

Далее вы хотите Ссылка Найти ссылку ниже

Link For Reference

+0

что случилось в этом коде? вниз проголосовали – Mano

+0

Как использовать checkLogin(), logoutUser(), isLoggedIn() @Mano – RushDroid

+0

его не работает, когда приложение закрывается и открывается open.it open re signning page @mano – RushDroid

Смежные вопросы