欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android通過SharedPreferences實(shí)現(xiàn)自動(dòng)登錄記住用戶名和密碼功能

 更新時(shí)間:2017年07月06日 14:36:51   作者:段延銳  
最近使用SharedPreferences實(shí)現(xiàn)了一個(gè)android自動(dòng)登錄功能,特此分享到腳本之家平臺(tái)供大家參考

最近Android項(xiàng)目需要一個(gè)自動(dòng)登錄功能,完成之后,特總結(jié)一下,此功能依靠SharedPreferences進(jìn)行實(shí)現(xiàn)。

SharedPreferences簡(jiǎn)介

SharedPreferences也是一種輕型的數(shù)據(jù)存儲(chǔ)方式,它的本質(zhì)是基于XML文件存儲(chǔ)key-value鍵值對(duì)數(shù)據(jù),通常用來(lái)存儲(chǔ)一些簡(jiǎn)單的配置信息。其存儲(chǔ)位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對(duì)象本身只能獲取數(shù)據(jù)而不支持存儲(chǔ)和修改,存儲(chǔ)修改是通過Editor對(duì)象實(shí)現(xiàn)。

SharedPreferences使用實(shí)例:記住用戶名密碼自動(dòng)登錄

大致了解了SharedPreference之后,接下來(lái)看個(gè)記住用戶名密碼自動(dòng)登錄的例子:

package com.dt5000.ischool.activity; 
import android.annotation.SuppressLint; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.View; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import com.dt5000.ischool.util.DTUtil; 
import com.dt5000.ischool.util.MyApplication; 
/** 
 * @author: duanyr 
 * @創(chuàng)建時(shí)間: 2012-11-13 下午2:36:47 
 * 
 * @類說(shuō)明:登錄界面 
 */ 
@SuppressLint("WorldReadableFiles") 
public class LoginActivity extends DTUtil { 
  private static final String TAG = "用戶登錄"; 
  private EditText username; 
  private EditText password; 
  private CheckBox autoLogin; 
  private SharedPreferences sharedPreferences; 
  private String message; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    MyApplication.getInstance().addActivity(this); 
    sharedPreferences = this.getSharedPreferences("userInfo",Context.MODE_WORLD_READABLE); 
    if (sharedPreferences.getBoolean("AUTO_ISCHECK", false)) { 
      Intent intent = new Intent(); 
      intent.setClass(LoginActivity.this, MainActivity.class); 
      startActivity(intent); 
    } else { 
      setContentView(R.layout.activity_login); 
      initView(); 
    } 
  } 
  /** 
   * 初始化視圖控件 
   */ 
  public void initView() { 
    Log.i(TAG, "初始化視圖控件"); 
    username = (EditText) findViewById(R.id.username); 
    password = (EditText) findViewById(R.id.password); 
    autoLogin = (CheckBox) findViewById(R.id.autoLogin); 
    // 默認(rèn)記住用戶名 
    username.setText(sharedPreferences.getString("userName", "")); 
  } 
  /** 
   * 點(diǎn)擊登錄按鈕時(shí)觸發(fā)的方法 
   * @param view 
   */ 
  public void userLogin(View view) { 
    String usernameString = username.getText().toString(); 
    String passwordString = password.getText().toString(); 
    if (validateUser(usernameString, passwordString)) { 
      Editor editor = sharedPreferences.edit(); 
      editor.putString("userName", usernameString); 
      if (autoLogin.isChecked()) {// 自動(dòng)登錄 
        editor.putString("password", passwordString); 
        editor.putBoolean("AUTO_ISCHECK", true).commit(); 
      } 
      editor.commit(); 
      Intent intent = new Intent(); 
      intent.setClass(LoginActivity.this, MainActivity.class); 
      startActivity(intent); 
    } else { 
      alert(this, message); 
    } 
  } 
  //游客登錄 
  public void visitorLogin(View view) { 
    Intent intent = new Intent(); 
    intent.setClass(LoginActivity.this, MainActivity.class); 
    startActivity(intent); 
  } 
  /** 
   * 驗(yàn)證用戶名密碼是否正確 
   * 
   * @param username 
   * @param password 
   * @return 
   */ 
  public boolean validateUser(String username, String password) { 
    Boolean flag = false; 
    try { 
      //...此處為調(diào)用web服務(wù),驗(yàn)證用戶名密碼的服務(wù),特此省略 
      flag = true; 
    } catch (Exception e) { 
      // TODO Auto-generated catch block 
      Log.e(TAG, e.getMessage()); 
      message = "連接服務(wù)器失敗"; 
    } 
    return flag; 
  } 
  /** 
   * 點(diǎn)擊退出按鈕時(shí)觸發(fā)的方法 
   */ 
  public void logout_listener(View view) { 
    dialog_Exit(this); 
  } 
  /** 
   * 監(jiān)聽返回按鈕,此為登錄界面再返回的話給出退出提示 
   */ 
  public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
      dialog_Exit(this); 
      return false; 
    } 
    return false; 
  } 
} 

頁(yè)面布局截圖:

生成的配置文件位置和代碼

userInfo.xml的具體代碼如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<string name="userName">777</string> 
<string name="password">111111</string> 
<boolean name="AUTO_ISCHECK" value="true" /> 
</map> 

以上所述是小編給大家介紹的Android通過SharedPreferences實(shí)現(xiàn)自動(dòng)登錄記住用戶名和密碼功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android中的OpenGL使用配置詳解

    Android中的OpenGL使用配置詳解

    這篇文章主要為大家介紹了Android中的OpenGL使用配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android中控件GridView實(shí)現(xiàn)設(shè)置行列分割線的方法示例

    Android中控件GridView實(shí)現(xiàn)設(shè)置行列分割線的方法示例

    這篇文章主要介紹了利用Android中控件GridView實(shí)現(xiàn)設(shè)置行列分割線的方法,文中給出了詳細(xì)的介紹與示例代碼,相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2017-01-01
  • 淺談Android手機(jī)的搶紅包插件

    淺談Android手機(jī)的搶紅包插件

    這篇文章主要介紹了淺談Android手機(jī)的搶紅包插件,對(duì)搶紅包插件感興趣的同學(xué)一定要看啊
    2021-04-04
  • Android持久化技術(shù)之文件的讀取與寫入實(shí)例詳解

    Android持久化技術(shù)之文件的讀取與寫入實(shí)例詳解

    這篇文章主要介紹了Android持久化技術(shù)之文件的讀取與寫入操作,結(jié)合實(shí)例形式較為詳細(xì)的分析講述了Android持久化操作的相關(guān)技巧與具體實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-01-01
  • Android自定義控件ViewFipper實(shí)現(xiàn)豎直跑馬燈效果

    Android自定義控件ViewFipper實(shí)現(xiàn)豎直跑馬燈效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件ViewFipper實(shí)現(xiàn)豎直跑馬燈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android基于Pull方式解析xml的方法詳解

    Android基于Pull方式解析xml的方法詳解

    這篇文章主要介紹了Android基于Pull方式解析xml的方法,結(jié)合實(shí)例形式詳細(xì)分析了Pull方式解析xml的原理、操作步驟與相關(guān)技巧,需要的朋友可以參考下
    2016-07-07
  • Android自定義ViewGroup實(shí)現(xiàn)朋友圈九宮格控件

    Android自定義ViewGroup實(shí)現(xiàn)朋友圈九宮格控件

    在我們的實(shí)際應(yīng)用中,經(jīng)常需要用到自定義控件,比如自定義圓形頭像,自定義計(jì)步器等等,這篇文章主要給大家介紹了關(guān)于Android自定義ViewGroup實(shí)現(xiàn)朋友圈九宮格控件的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • 最新評(píng)論