Android:即使在我关闭应用程序后仍保持用户名登录

时间:2016-03-11 13:53:41

标签: android session login registration

我是Android新手,我正在做一个有3个屏幕的应用程序:

  1. 第一个带登录和注册按钮的屏幕;
  2. 注册屏幕;
  3. 我的主屏幕,其中包含应用程序的功能。
  4. 注册和登录工作正常,问题是我需要找到一种方法来保持应用程序登录,即使我关闭了应用程序。

    这是主屏幕活动(登录屏幕在此屏幕中显示为弹出窗口):

        public class HomeActivity extends Activity
        {
            Button btnSignIn,btnSignUp;
            LoginDataBaseAdapter loginDataBaseAdapter;
    
            @Override
            protected void onCreate(Bundle savedInstanceState)
            {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
    
                // create a instance of SQLite Database
                loginDataBaseAdapter=new LoginDataBaseAdapter(this);
                loginDataBaseAdapter=loginDataBaseAdapter.open();
    
                // Get The Refference Of Buttons
                btnSignIn=(Button)findViewById(R.id.buttonSignIN);
                btnSignUp=(Button)findViewById(R.id.buttonSignUP);
    
                // Set OnClick Listener on SignUp button
                btnSignUp.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
    
                        /// Create Intent for SignUpActivity  abd Start The Activity
                        Intent intentSignUP=new Intent(getApplicationContext(),SignUPActivity.class);
                        startActivity(intentSignUP);
                    }
                });
            }
            // Methos to handleClick Event of Sign In Button
            public void signIn(View V)
            {
                final Dialog dialog = new Dialog(HomeActivity.this);
                dialog.setContentView(R.layout.login);
                dialog.setTitle("Login");
    
                // get the Refferences of views
                final  EditText editTextUserName=(EditText)dialog.findViewById(R.id.editTextUserNameToLogin);
                final  EditText editTextPassword=(EditText)dialog.findViewById(R.id.editTextPasswordToLogin);
    
                Button btnSignIn=(Button)dialog.findViewById(R.id.buttonSignIn);
    
                // Set On ClickListener
                btnSignIn.setOnClickListener(new View.OnClickListener() {
    
                    public void onClick(View v) {
                        // get The User name and Password
                        String userName=editTextUserName.getText().toString();
                        String password=editTextPassword.getText().toString();
    
                        // fetch the Password form database for respective user name
                        String storedPassword=loginDataBaseAdapter.getSinlgeEntry(userName);
    
                        // check if the Stored password matches with  Password entered by user
                        if(password.equals(storedPassword))
                        {
                            Toast.makeText(HomeActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show();
                            dialog.dismiss();
    
                            //SharedPreferences 
    
                            SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
                            SharedPreferences.Editor editor = sharedPref.edit();
                            editor.putInt(getString(userName), new_login);
                            SharedPreferences.Editor editor = sharedPref.edit();
                            editor.putInt(getString(password), new_password);
    
                            editor.commit();
    
                            //Teste pra mandar o usuario
    
                            Intent i = new Intent(getApplicationContext(), wheel.class);
                            i.putExtra("new_variable_name",userName);
    
                            //Teste pra mandar o usuario
    
                            Intent browserIntent =
                                    new Intent(HomeActivity.this, wheel.class);
    
                            startActivity(browserIntent);
                            startActivity(i);
    
                        }
                        else
                        {
                            Toast.makeText(HomeActivity.this, "User Name or Password does not match", Toast.LENGTH_LONG).show();
                        }
                    }
                });
    
                dialog.show();
            }
    
            @Override
            protected void onDestroy() {
                super.onDestroy();
                // Close The Database
                loginDataBaseAdapter.close();
            }
         }
    

    这是我的注册活动:

    public class SignUPActivity extends Activity
    {
        EditText editTextUserName,editTextPassword,editTextConfirmPassword;
        Button btnCreateAccount, btn_home;
    
        LoginDataBaseAdapter loginDataBaseAdapter;
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.signup);
    
            // get Instance  of Database Adapter
            loginDataBaseAdapter=new LoginDataBaseAdapter(this);
            loginDataBaseAdapter=loginDataBaseAdapter.open();
    
            // Get Refferences of Views
            editTextUserName=(EditText)findViewById(R.id.editTextUserName);
            editTextPassword=(EditText)findViewById(R.id.editTextPassword);
            editTextConfirmPassword=(EditText)findViewById(R.id.editTextConfirmPassword);
    
            btn_home=(Button)findViewById(R.id.btn_home);
            btn_home.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
                    Intent browserIntent =
                            new Intent(SignUPActivity.this, HomeActivity.class);
                    startActivity(browserIntent);
                }
            });
    
            btnCreateAccount=(Button)findViewById(R.id.buttonCreateAccount);
            btnCreateAccount.setOnClickListener(new View.OnClickListener() {
    
                public void onClick(View v) {
                    // TODO Auto-generated method stub
    
                    String userName=editTextUserName.getText().toString();
                    String password=editTextPassword.getText().toString();
                    String confirmPassword=editTextConfirmPassword.getText().toString();
    
                    // check if any of the fields are vaccant
                    if(userName.equals("")||password.equals("")||confirmPassword.equals(""))
                    {
                        Toast.makeText(getApplicationContext(), "Field Vaccant", Toast.LENGTH_LONG).show();
                        return;
                    }
                    // check if both password matches
                    if(!password.equals(confirmPassword))
                    {
                        Toast.makeText(getApplicationContext(), "Password does not match", Toast.LENGTH_LONG).show();
                        return;
                    }
                    else
                    {
                        // Save the Data in Database
                        loginDataBaseAdapter.insertEntry(userName, password);
                        Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show();
                    }
                }
            });
    
        }
        @Override
        protected void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
    
            loginDataBaseAdapter.close();
        }
    }
    

2 个答案:

答案 0 :(得分:1)

将身份验证数据保存在SharedPreferences中。如果用户已登录,则在应用程序打开时进行检查。

编辑1:

以下是write data to SharedPreferences的方式。

read data from SharedPreferences

希望这有帮助!

答案 1 :(得分:0)

我认为这可能会对您有所帮助:http://codeasp.net/blogs/android/1662/shared-preferences-in-android-applications

即使按下“LOAD DATA”按钮关闭应用程序,您也可以获取保存的登录详细信息。