歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發:利用Shared Preferences實現用戶本地登錄

Android開發:利用Shared Preferences實現用戶本地登錄

日期:2017/3/1 10:14:00   编辑:Linux編程

Android中四種數據存儲方式, Shared Preferences主要是以鍵值對的形式來存儲數據,他僅僅是輕量級存儲機制,主要實現android比較簡單參數的設置。這裡主要利用其中一種即Shared Preferenced來實現本地用戶登錄,下面是效果圖:

這時我們可以設置用戶名和密碼。

然後,當我們下次在打開軟件的時候,即出現下面登錄的效果:

點擊確定之後我們就可以進入下一層顯示。Shared Preference主要是以getPreference()方法獲取對象,然後再通過Editor來設置裡面鍵值對形式的參數,最後再通過commit方法來提交保存這些數據,這些數據無法共享,即無法直接在多個程序間共享Preference數據。下面是上面效果的主要源碼:

  1. public class MainActivity extends Activity {
  2. private AlertDialog setPrefernAlertDialog;
  3. private AlertDialog showPasswordDialog;
  4. private boolean isFirst;
  5. //保存數據 專用
  6. private SharedPreferences sp;
  7. private EditText safenumber;
  8. private TelephonyManager tm;
  9. private Button start_button,modify_button;
  10. private boolean isStart;
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. sp=this.getSharedPreferences("data",MODE_WORLD_READABLE);
  14. //主要以鍵值對的形式取出
  15. isFirst=sp.getBoolean("first", true);
  16. //若值沒設置 則開始設置密碼一類
  17. if (isFirst)
  18. {
  19. showSetPasswordDialog();
  20. return;
  21. }else {
  22. showInputPasswordDialog();
  23. }
  24. }
  25. public void init()
  26. {
  27. setContentView(R.layout.activity_main);
  28. }
  29. //第一次使用 創建彈出輸入密碼對話框 屬於dialog的基本操作
  30. private void showSetPasswordDialog()
  31. {
  32. AlertDialog.Builder builder=new AlertDialog.Builder(this);
  33. //給Dialog設置View 從XML文件轉換而來 這是屬於基本操作
  34. LayoutInflater inflater=LayoutInflater.from(this);
  35. View view= inflater.inflate(R.layout.show_password_dialog,null);
  36. final EditText username =(EditText)view.findViewById(R.id.username);
  37. final EditText userpassword=(EditText)view.findViewById(R.id.password);
  38. Button ok=(Button)view.findViewById(R.id.ok);
  39. Button cancle=(Button)view.findViewById(R.id.cancle);
  40. //設置動作
  41. ok.setOnClickListener(new OnClickListener()
  42. {
  43. @Override
  44. public void onClick(View v)
  45. {
  46. // TODO Auto-generated method stub
  47. String name=username.getText().toString();
  48. String password=userpassword.getText().toString();
  49. //設置密碼時 判斷兩者不能為空
  50. if(name.trim().equals("") || password.trim().equals("")) {
  51. Toast.makeText(MainActivity.this, "用戶名和密碼不能為空", Toast.LENGTH_LONG).show();
  52. return;
  53. }
  54. //sharedpreferences的基本操作 以鍵值對的形式保存到data文件中
  55. Editor editor=sp.edit();
  56. editor.putString("name",name);
  57. editor.putString("password",password);
  58. editor.putBoolean("first", false);
  59. //提交保存到生成的XML文件中
  60. editor.commit();
  61. setPrefernAlertDialog.dismiss();
  62. init();
  63. }
  64. });
  65. cancle.setOnClickListener(new OnClickListener()
  66. {
  67. @Override
  68. public void onClick(View v)
  69. {
  70. // TODO Auto-generated method stub
  71. //這裡注意要消去 對話框 再finish掉Activity 否則 有bug
  72. if (isFirst)
  73. {
  74. setPrefernAlertDialog.dismiss();
  75. MainActivity.this.finish();
  76. }
  77. setPrefernAlertDialog.dismiss();
  78. }
  79. });
  80. builder.setTitle("請設置密碼");
  81. builder.setView(view);
  82. setPrefernAlertDialog=builder.create();
  83. setPrefernAlertDialog.show();
  84. }
  85. /*
  86. * 當不是第一次操作,即已經設置完密碼之後的操作
  87. */
  88. public void showInputPasswordDialog()
  89. {
  90. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  91. LayoutInflater inflater = LayoutInflater.from(this);
  92. View view = inflater.inflate(R.layout.show_password_dialog, null);
  93. final EditText et_username = (EditText) view.findViewById(R.id.username);
  94. final EditText et_password = (EditText) view.findViewById(R.id.password);
  95. Button btn_ok = (Button) view.findViewById(R.id.ok);
  96. Button btn_cancle = (Button) view.findViewById(R.id.cancle);
  97. btn_ok.setOnClickListener(new OnClickListener() {
  98. public void onClick(View v) {
  99. String name = et_username.getText().toString();
  100. String password = et_password.getText().toString();
  101. if(name.trim().equals("") || password.trim().equals("")) {
  102. Toast.makeText(MainActivity.this, "用戶名和密碼不能為空", Toast.LENGTH_LONG).show();
  103. return;
  104. }
  105. //獲取保存文件中的用戶名和密碼
  106. String savedUsername = sp.getString("name", "");
  107. String savedPassword = sp.getString("password", "");
  108. //查看輸入的密碼和名字是否一致
  109. if(name.trim().equals(savedUsername) && password.trim().equals(savedPassword)) {
  110. init();
  111. showPasswordDialog.dismiss();
  112. } else {
  113. Toast.makeText(MainActivity.this, "用戶名或者密碼錯誤", Toast.LENGTH_LONG).show();
  114. return;
  115. }
  116. }});
  117. //下面屬於基本的操作
  118. btn_cancle.setOnClickListener(new OnClickListener() {
  119. public void onClick(View v) {
  120. showPasswordDialog.dismiss();
  121. MainActivity.this.finish();
  122. }});
  123. builder.setTitle("輸入密碼");
  124. builder.setView(view);
  125. showPasswordDialog = builder.create();
  126. showPasswordDialog.show();
  127. }
  128. }
Copyright © Linux教程網 All Rights Reserved