简体   繁体   English

要保持登录状态,请在 android 工作室中使用共享首选项

[英]To keep logged in, in android studio using shared preferences

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 . 1)如何在登录活动中使用共享首选项存储登录详细信息。 2)how to check whether to go to main activity or login activity in splash screen activity . 2)如何检查go 是否在启动屏幕活动中为主活动或登录活动

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:)帮我整理一下。谢谢:)

  1. Save login details in onResponse(String response)onResponse(String response)中保存登录详细信息

     SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putString("login", response); editor.commit();
  2. 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 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM