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


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

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

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

点击确定之后我们就可以进入下一层显示。Shared Preference主要是以getPreference()方法获取对象,然后再通过Editor来设置里面键值对形式的参数,最后再通过commit方法来提交保存这些数据,这些数据无法共享,即无法直接在多个程序间共享Preference数据。下面是上面效果的主要源码:

  1. public class MainActivity extends Activity {  
  2.   
  3.     private AlertDialog setPrefernAlertDialog;  
  4.     private AlertDialog showPasswordDialog;  
  5.     private  boolean isFirst;  
  6.     //保存数据 专用   
  7.     private SharedPreferences sp;  
  8.     private EditText safenumber;  
  9.     private TelephonyManager tm;  
  10.     private Button  start_button,modify_button;  
  11.     private boolean isStart;  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         sp=this.getSharedPreferences("data",MODE_WORLD_READABLE);    
  15.         //主要以键值对的形式取出   
  16.        isFirst=sp.getBoolean("first"true);  
  17.        //若值没设置 则开始设置密码一类   
  18.        if (isFirst)  
  19.     {  
  20.         showSetPasswordDialog();  
  21.         return;  
  22.     }else {  
  23.           
  24.         showInputPasswordDialog();  
  25.       }  
  26.          
  27.     }  
  28.     public void init()  
  29.     {  
  30.         setContentView(R.layout.activity_main);   
  31.           
  32.     }  
  33.   
  34.       //第一次使用 创建弹出输入密码对话框 属于dialog的基本操作    
  35.       private void showSetPasswordDialog()  
  36.       {  
  37.         AlertDialog.Builder builder=new AlertDialog.Builder(this);  
  38.           //给Dialog设置View 从XML文件转换而来 这是属于基本操作   
  39.          LayoutInflater inflater=LayoutInflater.from(this);   
  40.           View view=    inflater.inflate(R.layout.show_password_dialog,null);  
  41.           final EditText    username =(EditText)view.findViewById(R.id.username);  
  42.           final EditText  userpassword=(EditText)view.findViewById(R.id.password);  
  43.             
  44.             
  45.           Button ok=(Button)view.findViewById(R.id.ok);  
  46.           Button cancle=(Button)view.findViewById(R.id.cancle);  
  47.           //设置动作   
  48.           ok.setOnClickListener(new OnClickListener()  
  49.         {  
  50.               
  51.             @Override  
  52.             public void onClick(View v)  
  53.             {  
  54.                 // TODO Auto-generated method stub   
  55.                 String name=username.getText().toString();  
  56.                 String password=userpassword.getText().toString();  
  57.                 //设置密码时 判断两者不能为空   
  58.                 if(name.trim().equals("") || password.trim().equals("")) {  
  59.                     Toast.makeText(MainActivity.this"用户名和密码不能为空", Toast.LENGTH_LONG).show();  
  60.                      return;  
  61.                 }  
  62.                 //sharedpreferences的基本操作 以键值对的形式保存到data文件中   
  63.                 Editor editor=sp.edit();  
  64.                 editor.putString("name",name);  
  65.                 editor.putString("password",password);  
  66.                 editor.putBoolean("first"false);  
  67.                 //提交保存到生成的XML文件中   
  68.                 editor.commit();  
  69.                 setPrefernAlertDialog.dismiss();  
  70.                 init();  
  71.                   
  72.             }  
  73.         });  
  74.           cancle.setOnClickListener(new OnClickListener()  
  75.         {  
  76.               
  77.             @Override  
  78.             public void onClick(View v)  
  79.             {  
  80.                 // TODO Auto-generated method stub   
  81.                 //这里注意要消去 对话框 再finish掉Activity 否则 有bug   
  82.                 if (isFirst)  
  83.                 {  
  84.                     setPrefernAlertDialog.dismiss();  
  85.                     MainActivity.this.finish();  
  86.                 }  
  87.                 setPrefernAlertDialog.dismiss();  
  88.                   
  89.             }  
  90.         });  
  91.             
  92.             
  93.         builder.setTitle("请设置密码");  
  94.         builder.setView(view);  
  95.           setPrefernAlertDialog=builder.create();  
  96.           setPrefernAlertDialog.show();  
  97.        
  98.       }  
  99.       /* 
  100.        * 当不是第一次操作,即已经设置完密码之后的操作 
  101.        */  
  102.            
  103.       public void   showInputPasswordDialog()  
  104.       {  
  105.            AlertDialog.Builder builder = new AlertDialog.Builder(this);  
  106.               
  107.             LayoutInflater inflater = LayoutInflater.from(this);  
  108.             View view = inflater.inflate(R.layout.show_password_dialog, null);  
  109.             final EditText et_username = (EditText) view.findViewById(R.id.username);  
  110.             final EditText et_password = (EditText) view.findViewById(R.id.password);  
  111.               
  112.             Button btn_ok = (Button) view.findViewById(R.id.ok);  
  113.             Button btn_cancle = (Button) view.findViewById(R.id.cancle);  
  114.               
  115.             btn_ok.setOnClickListener(new OnClickListener() {  
  116.   
  117.                 public void onClick(View v) {  
  118.                     String name = et_username.getText().toString();  
  119.                     String password = et_password.getText().toString();  
  120.                       
  121.                     if(name.trim().equals("") || password.trim().equals("")) {  
  122.                         Toast.makeText(MainActivity.this"用户名和密码不能为空", Toast.LENGTH_LONG).show();  
  123.                         return;  
  124.                     }  
  125.                     //获取保存文件中的用户名和密码    
  126.                     String savedUsername = sp.getString("name""");  
  127.                     String savedPassword = sp.getString("password""");  
  128.                     //查看输入的密码和名字是否一致    
  129.                     if(name.trim().equals(savedUsername) && password.trim().equals(savedPassword)) {  
  130.                         init();  
  131.                         showPasswordDialog.dismiss();  
  132.                     } else {  
  133.                         Toast.makeText(MainActivity.this"用户名或者密码错误", Toast.LENGTH_LONG).show();  
  134.                         return;  
  135.                     }  
  136.                       
  137.                 }});  
  138.             //下面属于基本的操作    
  139.             btn_cancle.setOnClickListener(new OnClickListener() {  
  140.   
  141.                 public void onClick(View v) {  
  142.                     showPasswordDialog.dismiss();  
  143.                     MainActivity.this.finish();  
  144.                       
  145.                 }});  
  146.               
  147.             builder.setTitle("输入密码");  
  148.             builder.setView(view);  
  149.             showPasswordDialog = builder.create();  
  150.             showPasswordDialog.show();  
  151.   
  152.       }  
  153.   
  154. }  
  • 1
  • 2
  • 下一页

相关内容