Чтобы оставаться в системе, в студии android с использованием общих настроек - PullRequest
0 голосов
/ 14 июля 2020

Как сохранить данные для входа в общие настройки, когда пользователь входит в систему. При повторном открытии приложения, когда в общих настройках есть данные, они должны быть направлены на основное действие, иначе - на действие входа.

1 ) как сохранить данные для входа в систему, используя общие настройки в активности входа . 2) как проверить нужно ли go выполнять основное действие или вход в систему в spla sh активность экрана .

spla sh screen Активность

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

}

активность входа

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

}

Я пробовал хранить данные в общем предпочтение с помощью редактора при входе в систему, правильно это или нет? После этого, как проверить общие предпочтения в активности экрана spla sh. помогите разобраться. спасибо :)

1 Ответ

1 голос
/ 14 июля 2020
  1. Сохранить данные для входа в onResponse(String response)

      SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
         SharedPreferences.Editor editor = sharedPref.edit();
         editor.putString("login", response);
         editor.commit();
    
  2. Проверить, выполнил ли пользователь уже вход

    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
     }
    
...