Android开发:利用Shared Preferences实现用户本地登录

Android中四种数据存储方式, Shared Preferences主要是以键值对的形式来存储数据,他仅仅是轻量级存储机制,主要实现android比较简单参数的设置。这里主要利用其中一种即Shared Preferenced来实现本地用户登录,下面是效果图:

Android开发:利用Shared Preferences实现用户本地登录

这时我们可以设置用户名和密码。

然后,当我们下次在打开软件的时候,即出现下面登录的效果:

Android开发:利用Shared Preferences实现用户本地登录

点击确定之后我们就可以进入下一层显示。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();            }      }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e5f1e1347e7272e35d0b4d56799fa954.html