Android 实现简单的登陆注册功能(SharedPreferences和SQLite)
最近剛好做了一個Android的登錄注冊界面,將數據利用SharedPreferences或者SQLite綁定到Android程序中,實現簡單的登陸注冊功能,本文未涉及到與服務器的交流。
首先,對于登陸注冊要有一個明確的邏輯順序,不管是對于SharedPreferences還是SQLite,流程都是:注冊---->檢測是否重名---->注冊成功---->登錄---->驗證用戶名與密碼---->登錄成功。清楚了這個流程之后,就可以往下寫了。這里為什么要提到SharedPreferences和SQLite兩種方式呢?或許會有人問道,SharedPreferences只能存儲一些簡單的數據保存在xml文件中,而且它的數據存儲是覆蓋式的(即存儲一條數據會立即擦除覆蓋上一條記錄),可操作性比起SQLite要差很多,為什么還要用這個呢?因為從實用角度來說,如果一臺設備或者儀器只需要給一個默認的登錄用戶,那么這個時候完全不需要寫一個SQLite來進行存儲,只要給一個默認的鍵值對來進行一次存儲就可以了。但是如果需要實現多人注冊功能,那么就需要SQLite來進行一些數據庫的操作了。
前面兩步,我們需要創建一個Registe_Activity,實現注冊功能,效果如下:
這一步是整個登陸功能的核心,因為涉及到如何存儲用戶信息,涉及到數據庫的增刪改查功能,所以比較重要。
首先我們來看利用SharedPreferences來實現一次性存儲功能,代碼如下:
?
private void saveUsersInfo() {SharedPreferences sharedPreferences = getSharedPreferences("UsersInfo", MODE_APPEND);SharedPreferences.Editor editor = sharedPreferences.edit();editor.putString("username", edit_register.getText().toString());//判斷注冊時的兩次密碼是否相同if (edit_setpassword.getText().toString().equals(edit_resetpassword.getText().toString())) {editor.putString("password", edit_setpassword.getText().toString());}editor.commit();}首先創建一個UsersInfo.xml文件,然后用鍵值對的形式來存儲數據,這個過程和Intent傳值類似。對于注冊時,這里還加了一個“確認密碼”項,可以提供更好的用戶體驗。利用SharedPreferences進行存儲的時候,因為是一次性存儲,所以一旦注冊,就要講注冊功能屏蔽掉了,防止再次注冊修改用戶信息。
?
接下來,我們用SQLite進行多人注冊功能的實現,這里主要是一個增加數據的功能,先看代碼:
?
private void registerUserInfo(String username, String userpassword) {SQLiteDatabase db = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put("username", username);values.put("password", userpassword);db.insert("usertable", null, values);db.close();}其實,從代碼來看,并不是很難理解,這里也是通過鍵值對的形式來存儲用戶信息的,但是在一開始創建數據庫和創建用戶表的時候,需要將id設置為autoincrement,讓其實現自動增加的功能,在這里還需要注意的一點是注冊時需要判斷該用戶名是否已經被使用,利用數據庫的查詢語句可以很方便的實現。
?
?
public boolean CheckIsDataAlreadyInDBorNot(String value) {SQLiteDatabase db = dbHelper.getWritableDatabase();String Query = "Select * from usertable where username =?";Cursor cursor = db.rawQuery(Query, new String[]{value});if (cursor.getCount() > 0) {cursor.close();return true;}cursor.close();return false;}?
接下來,我們需要創建一個Login_Activity,用來實現登錄界面,效果如下:
這樣一個登錄界面,主要實現的功能就是讀取注冊過得用戶名——密碼鍵值對,那么如何利用兩種方式進行讀取數據呢?
首先來看SharedPreferences的讀取,這種讀取方式和Intent的傳值類似,代碼也很簡單。
?
public void readUsersInfo(){SharedPreferences sharedPreferences = getSharedPreferences("UsersInfo",MODE_PRIVATE);account = sharedPreferences.getString("username","");password = sharedPreferences.getString("password",""); }在注冊的時候,首先會創建一個UserInfo.xml文件,然后以鍵值對的方式存儲用戶名和密碼,讀取就很簡單了。如果想要對用戶名和密碼進行驗證,也很簡單,只要獲取到兩個EditText的輸入值與讀取到的值進行比較即可。
?
對于SQLite的數據讀取,相對而言就要麻煩一些,同樣開始的時候,我們也需要檢索到這樣一對鍵值對,代碼如下:
?
public boolean login(String username, String password) {SQLiteDatabase db = dbHelper.getWritableDatabase();String sql = "Select * from usertable where username=? and password=?";Cursor cursor = db.rawQuery(sql, new String[]{username, password});if (cursor.moveToFirst()) {cursor.close();return true;}return false;}前提我們得獲取到之前創建的數據庫,然后利用Select語句進行檢索,其中傳入的username和password均為輸入的值,然后將這兩個值與數據庫中已有的值進行用戶驗證。注冊登錄的本質就是對于一個數據的存儲與讀取,其主要內容就是操作數據,對于界面的優化,這個因人而異,只要實現了用戶功能即可。本例中對于用戶體驗方面,還有以下幾個小動作:
?
1.登陸界面的密碼是否可見
2.注冊時,用戶名字符的輸入限制,本例中允許的字符類型有字母、數字、漢字和下劃線_
3.對于密碼長度暫時沒有設置
4.在登陸成功后,自動獲取登錄用戶的信息,并顯示到界面上
源碼下載地址:http://download.csdn.net/detail/xiaoxun2802/9893567
希望對大家有所幫助,如有需要可加Q:2261886204聯系獲取。
?
總結
以上是生活随笔為你收集整理的Android 实现简单的登陆注册功能(SharedPreferences和SQLite)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android清理内存
- 下一篇: Android手机IMEI码结构说明