溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android中怎么利用SharedPreferences實(shí)現(xiàn)自動登錄記住用戶名和密碼功能

發(fā)布時間:2021-06-28 16:38:47 來源:億速云 閱讀:340 作者:Leah 欄目:移動開發(fā)

本篇文章為大家展示了Android中怎么利用SharedPreferences實(shí)現(xiàn)自動登錄記住用戶名和密碼功能,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

SharedPreferences簡介

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

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

大致了解了SharedPreference之后,接下來看個記住用戶名密碼自動登錄的例子:

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)建時間: 2012-11-13 下午2:36:47 
 * 
 * @類說明:登錄界面 
 */ 
@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)擊登錄按鈕時觸發(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()) {// 自動登錄 
        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)擊退出按鈕時觸發(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; 
  } 
}

頁面布局截圖:

Android中怎么利用SharedPreferences實(shí)現(xiàn)自動登錄記住用戶名和密碼功能

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

Android中怎么利用SharedPreferences實(shí)現(xiàn)自動登錄記住用戶名和密碼功能

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>

上述內(nèi)容就是Android中怎么利用SharedPreferences實(shí)現(xiàn)自動登錄記住用戶名和密碼功能,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI