android проверяет, вошел ли пользователь в систему

#android #login #sharedpreferences

#Android #войти #sharedpreferences

Вопрос:

Я хочу проверить, зарегистрирован ли пользователь уже в приложении, поэтому, если пользователь не зарегистрирован, он будет перенаправлен Login.class , и если пользователь уже зарегистрирован, он будет перенаправлен на него Profile.class .

Я видел учебное пособие по проверке входа пользователя в систему из Интернета SplashActivity.class , но я попробовал его и не сработал для меня, я не знаю, может быть, я просто не понимаю, как это работает, поскольку я новичок в программировании

мои коды:

Класс входа

     public class DocLogin extends Fragment {

    ImageView ivIcon;
    TextView tvItemName, tvRegister;
    EditText user, pass;
    Button btnLogin;
    String username, password;
    SQLController dbcon;
    SharedPreferences sh_Pref;
    Editor editor;

    private static final String IS_LOGIN = "IsLoggedIn";
    int PRIVATE_MODE = 0;


    public DocLogin() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.doc_log_in, container, false);

        dbcon = new SQLController(getActivity());
        dbcon.open();

        // Log in
        user = (EditText) view.findViewById(R.id.etUser);
        pass = (EditText) view.findViewById(R.id.etPassword);
        btnLogin = (Button) view.findViewById(R.id.btnLogin);

        // Sign up
        tvRegister = (TextView) view.findViewById(R.id.tvRegDoc);
        tvRegister.setMovementMethod(LinkMovementMethod.getInstance());
        tvRegister.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                FragmentManager fm = getFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.content_frame, new DocReg());
                ft.commit();
                return false;
            }
        });

        // btnLogin onClickListener
        btnLogin.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View view) {
                // TODO Auto-generated method stub

                dbcon = new SQLController(getActivity());
                dbcon.open();

                username = user.getText().toString();
                password = pass.getText().toString();
                sharedPreferences();
                Toast.makeText(getActivity(), "Login Successful", 20).show();

                Log.v("LoginDetails", user.getText().toString()   "../.."
                          pass.getText().toString());
                Cursor cur = dbcon.getuser_information(user.getText()
                        .toString(), pass.getText().toString());
                if (cur.getCount() != 0) {
                    FragmentManager fm = getFragmentManager();
                    FragmentTransaction ft = fm.beginTransaction();
                    ft.replace(R.id.content_frame, new DocProfile());
                    ft.commit();
                } else {
                    AlertDialog alertDialog = new AlertDialog.Builder(
                            getActivity()).create();
                    alertDialog.setTitle("Login Error");
                    alertDialog
                            .setMessage("Doctor Code and Password does not match");
                    alertDialog.setButton("OK",
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // TODO Auto-generated method stub
                                    // dismiss dialog
                                }
                            });
                    alertDialog.show();
                }

            }
        });

        return view;
    }


    public void sharedPreferences() {

        sh_Pref = getActivity().getSharedPreferences("Login Credentials", PRIVATE_MODE);
        editor = sh_Pref.edit();
        editor.putBoolean(IS_LOGIN, true);
        editor.putString("Username", username);
        editor.putString("Password", password);
        editor.commit();
    }

}
 

Пожалуйста, укажите мне правильный способ достижения моей цели.

Ответ №1:

вам необходимо добавить поле alreadylogin в таблицу входа в базу данных. если пользователь впервые входит в систему, установите для поля alreadylogin значение true, иначе по умолчанию false.Каждый раз вы должны проверять поле alreadylogin.если поле имеет значение true, вы должны перенаправить.

Ответ №2:

Ваш код показывает, что ваши настройки установлены. Итак, укажите следующее, где вы хотите проверить, вошли ли вы в систему или нет.

 SharedPreferences sh_Pref = getActivity().getSharedPreferences("Login Credentials", PRIVATE_MODE);
boolean check = sh_Pref.getBoolean(IS_LOGIN, false);
if(check){
    Intent intent = new Intent(this, Profile.class);
    startActivity(intent);
    finish();
}
 

Если пользователь уже вошел в систему, пользователь будет перенаправлен на Profile.class

Комментарии:

1. могу ли я использовать это в SplashActivity?

2. Вы можете использовать этот фрагмент в любом месте вашего приложения, где вы хотите проверить вход в систему.