Android开发:利用Shared Preferences实现用户本地登录
Android开发:利用Shared Preferences实现用户本地登录
Android中四种数据存储方式, Shared Preferences主要是以键值对的形式来存储数据,他仅仅是轻量级存储机制,主要实现android比较简单参数的设置。这里主要利用其中一种即Shared Preferenced来实现本地用户登录,下面是效果图:
这时我们可以设置用户名和密码。
然后,当我们下次在打开软件的时候,即出现下面登录的效果:
点击确定之后我们就可以进入下一层显示。Shared Preference主要是以getPreference()方法获取对象,然后再通过Editor来设置里面键值对形式的参数,最后再通过commit方法来提交保存这些数据,这些数据无法共享,即无法直接在多个程序间共享Preference数据。下面是上面效果的主要源码:
- public class MainActivity extends Activity {
- private AlertDialog setPrefernAlertDialog;
- private AlertDialog showPasswordDialog;
- private boolean isFirst;
- //保存数据 专用
- private SharedPreferences sp;
- private EditText safenumber;
- private TelephonyManager tm;
- private Button start_button,modify_button;
- private boolean isStart;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- sp=this.getSharedPreferences("data",MODE_WORLD_READABLE);
- //主要以键值对的形式取出
- isFirst=sp.getBoolean("first", true);
- //若值没设置 则开始设置密码一类
- if (isFirst)
- {
- showSetPasswordDialog();
- return;
- }else {
- showInputPasswordDialog();
- }
- }
- public void init()
- {
- setContentView(R.layout.activity_main);
- }
- //第一次使用 创建弹出输入密码对话框 属于dialog的基本操作
- private void showSetPasswordDialog()
- {
- AlertDialog.Builder builder=new AlertDialog.Builder(this);
- //给Dialog设置View 从XML文件转换而来 这是属于基本操作
- LayoutInflater inflater=LayoutInflater.from(this);
- View view= inflater.inflate(R.layout.show_password_dialog,null);
- final EditText username =(EditText)view.findViewById(R.id.username);
- final EditText userpassword=(EditText)view.findViewById(R.id.password);
- Button ok=(Button)view.findViewById(R.id.ok);
- Button cancle=(Button)view.findViewById(R.id.cancle);
- //设置动作
- ok.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- // TODO Auto-generated method stub
- String name=username.getText().toString();
- String password=userpassword.getText().toString();
- //设置密码时 判断两者不能为空
- if(name.trim().equals("") || password.trim().equals("")) {
- Toast.makeText(MainActivity.this, "用户名和密码不能为空", Toast.LENGTH_LONG).show();
- return;
- }
- //sharedpreferences的基本操作 以键值对的形式保存到data文件中
- Editor editor=sp.edit();
- editor.putString("name",name);
- editor.putString("password",password);
- editor.putBoolean("first", false);
- //提交保存到生成的XML文件中
- editor.commit();
- setPrefernAlertDialog.dismiss();
- init();
- }
- });
- cancle.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- // TODO Auto-generated method stub
- //这里注意要消去 对话框 再finish掉Activity 否则 有bug
- if (isFirst)
- {
- setPrefernAlertDialog.dismiss();
- MainActivity.this.finish();
- }
- setPrefernAlertDialog.dismiss();
- }
- });
- builder.setTitle("请设置密码");
- builder.setView(view);
- setPrefernAlertDialog=builder.create();
- setPrefernAlertDialog.show();
- }
- /*
- * 当不是第一次操作,即已经设置完密码之后的操作
- */
- public void showInputPasswordDialog()
- {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- LayoutInflater inflater = LayoutInflater.from(this);
- View view = inflater.inflate(R.layout.show_password_dialog, null);
- final EditText et_username = (EditText) view.findViewById(R.id.username);
- final EditText et_password = (EditText) view.findViewById(R.id.password);
- Button btn_ok = (Button) view.findViewById(R.id.ok);
- Button btn_cancle = (Button) view.findViewById(R.id.cancle);
- btn_ok.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- String name = et_username.getText().toString();
- String password = et_password.getText().toString();
- if(name.trim().equals("") || password.trim().equals("")) {
- Toast.makeText(MainActivity.this, "用户名和密码不能为空", Toast.LENGTH_LONG).show();
- return;
- }
- //获取保存文件中的用户名和密码
- String savedUsername = sp.getString("name", "");
- String savedPassword = sp.getString("password", "");
- //查看输入的密码和名字是否一致
- if(name.trim().equals(savedUsername) && password.trim().equals(savedPassword)) {
- init();
- showPasswordDialog.dismiss();
- } else {
- Toast.makeText(MainActivity.this, "用户名或者密码错误", Toast.LENGTH_LONG).show();
- return;
- }
- }});
- //下面属于基本的操作
- btn_cancle.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- showPasswordDialog.dismiss();
- MainActivity.this.finish();
- }});
- builder.setTitle("输入密码");
- builder.setView(view);
- showPasswordDialog = builder.create();
- showPasswordDialog.show();
- }
- }
|
评论暂时关闭