android存储数据库中的用户名和密码,并将其用于多个活动

时间:2016-01-12 06:05:08

标签: android database sqlite login

我想将用户名和密码存储在全局变量或数据库中

实际上我有一次活动..我试过共享偏好...

所以我这样做了..

public class Login extends Activity {
public static final String PREFS_NAME = "LoginPrefs";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
    if (settings.getString("logged", "").toString().equals("logged")) {
        Intent intent = new Intent(Login.this, MainActivity.class);
        startActivity(intent);
    }

    Button b = (Button) findViewById(R.id.loginbutton);
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText username = (EditText) findViewById(R.id.login);
            EditText passsword= (EditText) findViewById(R.id.password);
            Snipper usertype= (Snipper) findViewById(R.id.ut);
            Snipper ctype= (Snipper) findViewById(R.id.ct);

            if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 && usertype.getSelectedItem().toString().length()>0 && ctype.getSelectedItem().toString().length()>0) {
                //if(username.getText().toString().equals("admin") && password.getText().toString().equals("admin")) {

                    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("logged", "logged");
                    editor.commit();
                    Intent intent = new Intent(Login.this, MainActivity.class);
                    startActivity(intent);
                //}
            }
        }
    });
 }
}

这里连同用户名和密码我保存了总共4个值......

所以我想将它们保存为数据库或全局变量并在多个活动中使用 ...

任何人都可以通过示例说明或更正我的代码...请不要发布书籍或指南行告诉我示例链接或代码......我需要更改...

2 个答案:

答案 0 :(得分:2)

您正在存储“登录”键,这有助于您检查用户是否已登录。它一直存在于应用程序中。

通过在sharedPref中存储HashMap,您可以执行相同的操作来存储用户名和密码。

Map<String, String> map = new HashMap<String, String>();

map.put("username", username);
map.put("password", password);

SharedPreferences prefs = context.getSharedPreferences("TEST", 0);
SharedPreferences.Editor editor = prefs.edit();

for (String key : map.keySet()) {
  editor.putString(key, map.get(key));
}

editor.apply();

从sharedPref获取价值

 SharedPreferences prefs = context.getSharedPreferences("TEST", 0);
 HashMap<String, String> map= (HashMap<String, String>) pref.getAll();

 for (String key : map.keySet()) {
        String value=map.get(key);
 }

您的活动:

public class Login extends Activity {
public static final String PREFS_NAME = "LoginPrefs";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);

    HashMap<String, String> map= (HashMap<String, String>) settings.getAll();

    if(map != null && ( map.containsKey("username") &&  map.containsKey("password")
        map.get("username") != null && map.get("password") != null){

        Intent intent = new Intent(Login.this, MainActivity.class);
        startActivity(intent);
    }

    /*if (settings.getString("logged", "").toString().equals("logged")) {
        Intent intent = new Intent(Login.this, MainActivity.class);
        startActivity(intent);
    }*/

    Button b = (Button) findViewById(R.id.loginbutton);
    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText username = (EditText) findViewById(R.id.login);
            EditText passsword= (EditText) findViewById(R.id.password);
            Snipper usertype= (Snipper) findViewById(R.id.ut);
            Snipper ctype= (Snipper) findViewById(R.id.ct);

            if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 && usertype.getSelectedItem().toString().length()>0 && ctype.getSelectedItem().toString().length()>0) {
                //if(username.getText().toString().equals("admin") && password.getText().toString().equals("admin")) {

                    /*SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("logged", "logged");
                    editor.commit();*/

                    String uname = username.getText().toString();
                    String pass  = password.getText().toString();

                    Map<String, String> map = new HashMap<String, String>();

                    map.put("username", uname);
                    map.put("password", pass);

                    SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);
                    SharedPreferences.Editor editor = prefs.edit();

                    for (String key : map.keySet()) {
                        editor.putString(key, map.get(key));
                    }

                    editor.apply();

                    Intent intent = new Intent(Login.this, MainActivity.class);
                    startActivity(intent);
                //}
            }
        }
    });
}

请阅读SharedPreference教程。在本活动中,我如何提及SharedPreference,使用与使用LoginPrefs键调用它的方式相同。

希望它对你有用。

干杯... !!!

答案 1 :(得分:-1)

您当前的方法是正确的,但您对SharedPreferences的理解错误。

  

在我目前的方法中,我想将它用于多项活动

您可以使用来自不同活动的SharedPreferences来读取和写入数据。