要保持登录状态,请在 android 工作室中使用共享首选项
To keep logged in, in android studio using shared preferences
如何在用户登录时将登录详细信息存储在共享首选项中。当共享首选项有数据时重新打开应用程序时,它应该指向主 activity,否则指向登录 activity.
1)如何使用 login activity 中的共享首选项 store 登录详细信息。
2)如何检查是否进入主activity或在启动画面activity中登录activity .
启动画面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);
}
}
登录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();
}
}
我尝试在登录时使用编辑器将数据存储在共享首选项中 activity,是否正确?
完成后如何在初始屏幕 activity 中检查共享首选项。
帮我整理一下out.Thank你:)
将登录详细信息保存在 onResponse(String response)
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("login", response);
editor.commit();
检查用户是否已经登录
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
}
如何在用户登录时将登录详细信息存储在共享首选项中。当共享首选项有数据时重新打开应用程序时,它应该指向主 activity,否则指向登录 activity.
1)如何使用 login activity 中的共享首选项 store 登录详细信息。 2)如何检查是否进入主activity或在启动画面activity中登录activity .
启动画面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);
}
}
登录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();
}
}
我尝试在登录时使用编辑器将数据存储在共享首选项中 activity,是否正确? 完成后如何在初始屏幕 activity 中检查共享首选项。 帮我整理一下out.Thank你:)
将登录详细信息保存在
onResponse(String response)
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPref.edit(); editor.putString("login", response); editor.commit();
检查用户是否已经登录
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 }