2017-10-16 11 views
0

나는 학습 안드로이드 개발입니다. 등록 및 로그인 앱을 만들고 있습니다. 내 등록 및 로그인이 올바르게 작동합니다. 하지만 공유 환경 설정에서 사용자 이름과 비밀번호를 저장하는 방법을 모르겠습니다. 부울 값을 설정하여 슬래시 화면에서 로그인을 확인하십시오. 여기 내 코드 .공유 환경 설정에서 사용자 이름과 암호를 저장하려고합니다.

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

이것은 내 슬래시 화면 코드입니다.

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

이 문제를 해결하는 데 도움을주십시오. 미리 감사드립니다.

이 방법에 의해 공유 환경 설정에서
+0

이 [** 답변 **] (HTTPS에서 참조하시기 바랍니다 : // stackoverflow.com/questions/9233035/best-option-to-store-username-and-password-in-android-app) – Mandy8055

+0

정확히 어떤 문제가 있습니까? –

+0

조언 만하면됩니다. 장치에 비밀번호를 저장해서는 안되며, 인증을 위해 일부 authtoken 또는 쿠키를 사용해야합니다. –

답변

0

데이터 저장 : 시작 화면에

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

그리고 확인 데이터

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