How to store the login details in shared preferences when the user logs in. while reopening the app when the shared preference has data then it should directed to the main activity, else to the login activity.
1)how to store login details using shared preferences in login activity. 2)how to check whether to go to main activity or login activity in splash screen activity.
splash screen Activity
public class SplashScreen extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashScreen.this, LoginAcivity.class));
finish();
}
}, 1500);
}
}
login activity
public class LoginAcivity extends AppCompatActivity {
EditText numberEt,passwordEt;
Button submit_button;
TextView signupText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_acivity);
numberEt=findViewById(R.id.number);
passwordEt=findViewById(R.id.password);
submit_button=findViewById(R.id.submit_button);
signupText=findViewById(R.id.sign_up_text);
signupText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginAcivity.this,RegisterActivity.class));
}
});
submit_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
numberEt.setError(null);
passwordEt.setError(null);
String number =numberEt.getText().toString();
String password=passwordEt.getText().toString();
if(isValid(number,password)){
login(number,password);
}
}
});
}
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
SharedPreferences.Editor editor = pref.edit();
private void login(final String number,final String password){
StringRequest stringRequest = new StringRequest(Request.Method.POST, Endpoints.login_url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(!(response.equals("Invalid Credentials"))){
editor.putInt("numberEt", Integer.parseInt(number));
editor.commit();
Toast.makeText(LoginAcivity.this,response,Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginAcivity.this,MainActivity.class));
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("number",number).apply();
PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("city",response).apply();
LoginAcivity.this.finish();
}else{
Toast.makeText(LoginAcivity.this,response,Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginAcivity.this,"Something went Wrong:(",Toast.LENGTH_SHORT).show();
Log.d("VOLLEY", Objects.requireNonNull(error.getMessage()));
}
}){
@Override
protected Map<String,String> getParams() throws AuthFailureError {
Map<String,String> params=new HashMap<>();
params.put("number",number);
params.put("password",password);
return params;
}
};
VolleySingleton.getInstance(this).addToRequestQueue(stringRequest);
}
private boolean isValid(String number, String password){
if(number.isEmpty()){
showMessage("Empty Mobile Number");
numberEt.setError("Empty Mobile Number");
return false;
}else if(password.isEmpty()){
showMessage("Empty Password");
passwordEt.setError("Empty Password");
return false;
}
return true;
}
private void showMessage(String msg){
Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
}
}
I tried storing data in shared preference using Editor in login activity, whether it is correct or not? After doing that how to check the shared preference in splash screen activity. help me to sort it out.Thank you:)
Save login details in onResponse(String response)
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("login", response);
editor.commit();
Check whether user has already logged in
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
String city = sharedPref.getString("login", "");
if(!city.equal("")){
//user already logged in, go to Main Screen
}else {
//user hasn't logged in yet, to go Login Screen
}