歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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. }  
Copyright © Linux教程網 All Rights Reserved