2017-10-16 35 views
0

J'apprends le développement android. Je fais une inscription et une application de connexion. mon inscription et mon login fonctionnent correctement. Mais je ne sais pas comment enregistrer le nom d'utilisateur et mot de passe dans la préférence partagée. et définissez une valeur booléenne pour vérifier dans l'écran de barre oblique pour vérifier la connexion. voici mon code.Je souhaite enregistrer un nom d'utilisateur et un mot de passe dans les préférences partagées

public class LoginActivity extends AppCompatActivity implements View.OnClickListener { 
    private final AppCompatActivity activity = LoginActivity.this; 

    private NestedScrollView nestedScrollView; 

    private TextInputLayout textInputLayoutEmail; 
    private TextInputLayout textInputLayoutPassword; 

    private TextInputEditText textInputEditTextEmail; 
    private TextInputEditText textInputEditTextPassword; 

    private AppCompatButton appCompatButtonLogin; 

    private AppCompatTextView textViewLinkRegister; 

    private InputValidation inputValidation; 
    private DatabaseHelper databaseHelper; 
    AnimationDrawable animationDrawable; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 
     initViews(); 
     initListeners(); 
     initObjects(); 
     animationDrawable=(AnimationDrawable)nestedScrollView.getBackground(); 
     animationDrawable.setEnterFadeDuration(1000); 
     animationDrawable.setExitFadeDuration(1000); 
     animationDrawable.start(); 

     //saving data in shared priference 
     SharedPreferences sharedPreferences=getSharedPreferences("Login",MODE_PRIVATE); 
     SharedPreferences.Editor editor=sharedPreferences.edit(); 
     editor.putBoolean("isLogin",true); 
     editor.putString("user", String.valueOf(textInputEditTextEmail)); 
     editor.putString("pass", String.valueOf(textInputEditTextPassword)); 
     editor.commit(); 
    } 

    /** 
    * This method is to initialize views 
    */ 
    private void initViews() { 

     nestedScrollView = (NestedScrollView) findViewById(R.id.nestedScrollView); 

     textInputLayoutEmail = (TextInputLayout) findViewById(R.id.textInputLayoutEmail); 
     textInputLayoutPassword = (TextInputLayout) findViewById(R.id.textInputLayoutPassword); 

     textInputEditTextEmail = (TextInputEditText) findViewById(R.id.textInputEditTextEmail); 
     textInputEditTextPassword = (TextInputEditText) findViewById(R.id.textInputEditTextPassword); 

     appCompatButtonLogin = (AppCompatButton) findViewById(R.id.appCompatButtonLogin); 

     textViewLinkRegister = (AppCompatTextView) findViewById(R.id.textViewLinkRegister); 

    } 

    /** 
    * This method is to initialize listeners 
    */ 
    private void initListeners() { 
     appCompatButtonLogin.setOnClickListener(this); 
     textViewLinkRegister.setOnClickListener(this); 
    } 

    /** 
    * This method is to initialize objects to be used 
    */ 
    private void initObjects() { 
     databaseHelper = new DatabaseHelper(activity); 
     inputValidation = new InputValidation(activity); 

    } 

    /** 
    * This implemented method is to listen the click on view 
    * 
    * @param v 
    */ 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.appCompatButtonLogin: 
       verifyFromSQLite(); 
       break; 
      case R.id.textViewLinkRegister: 
       // Navigate to RegisterActivity 
       Intent intentRegister = new Intent(getApplicationContext(), RegisterActivity.class); 
       startActivity(intentRegister); 
       break; 
     } 
    } 

    /** 
    * This method is to validate the input text fields and verify login credentials from SQLite 
    */ 
    private void verifyFromSQLite() { 
     if (!inputValidation.isInputEditTextFilled(textInputEditTextEmail, textInputLayoutEmail, getString(R.string.error_message_email))) { 
      return; 
     } 
     if (!inputValidation.isInputEditTextEmail(textInputEditTextEmail, textInputLayoutEmail, getString(R.string.error_message_email))) { 
      return; 
     } 
     if (!inputValidation.isInputEditTextFilled(textInputEditTextPassword, textInputLayoutPassword, getString(R.string.error_message_email))) { 
      return; 
     } 

     if (databaseHelper.checkUser(textInputEditTextEmail.getText().toString().trim() 
       , textInputEditTextPassword.getText().toString().trim())) { 
      Intent accountsIntent = new Intent(activity, HomePage.class); 
      accountsIntent.putExtra("EMAIL", textInputEditTextEmail.getText().toString().trim()); 
      emptyInputEditText(); 
      startActivity(accountsIntent); 
      finish(); 
     } else { 
      // Snack Bar to show success message that record is wrong 
      Toast.makeText(getApplicationContext(),getString(R.string.error_valid_email_password),Toast.LENGTH_LONG).show(); 

     } 
    } 

    /** 
    * This method is to empty all input edit text 
    */ 
    private void emptyInputEditText() { 
     textInputEditTextEmail.setText(null); 
     textInputEditTextPassword.setText(null); 
    } 
} 

Ceci est mon code d'écran oblique.

public class MainActivity extends AppCompatActivity { 
    private static int slash_screen_time_out=4000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       Intent intent=new Intent(getApplicationContext(),LoginActivity.class); 
       startActivity(intent); 
       finish(); 
      } 
     },slash_screen_time_out); 
    } 
} 

S'il vous plaît aidez-moi à résoudre ce problème. Merci d'avance.

+0

S'il vous plaît jeter un oeil à ce [**] ** réponse (https: // stackoverflow.com/questions/9233035/best-option-to-store-username-and-password-in-android-app) – Mandy8055

+0

Quel est votre problème exactement? –

+0

juste un conseil, vous ne devriez pas stocker le mot de passe sur l'appareil, vous devez utiliser un authtoken ou des cookies pour l'authentification. –

Répondre

0

Enregistrer les données dans les préférences partagées de cette façon:

SharedPreferences settings = getSharedPreferences("Login", 0); 
settings.edit().putString("user", username).apply(); 
... 

et vérifier les données sur l'écran de démarrage

String username = settings.getString("user", ""); 
if (username.isEmpty()){ 
    //.. data not saved 
} else { 
//.. data saved 
}