Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> SharedPreferences實現記住密碼功能,js實現記住密碼功能

SharedPreferences實現記住密碼功能,js實現記住密碼功能

編輯:關於android開發

SharedPreferences實現記住密碼功能,js實現記住密碼功能


SharedPerferences 簡單介紹

  • 用於保存簡單的鍵值對數據;
  • 它將數據放在 /data/data/<package name>/shared_prefs目錄下,用xml文件保存MAP鍵值對;

SharedPerferences 使用步驟

將數據存儲到SharedPerferences中:

  1.先要得到SharedPerference對象:(三種方法)

      1).使用Context類中的 getSharedPreferences() 方法,它接收兩個參數,第一個參數為文件名稱,第二個參數為操作模式。

       操作模式MODE_PRAVITE :只有當前程序才能對這個文件進行讀寫。MODE_MULTI_PROCESS :多個進程中對同一個文件進行讀寫。

       如:

SharedPreferences spf = getSharedPreferences("data",Context.MODE_PRIVATE);

 

      2).使用Activity類中的 getPreferences() 方法,它只接收一個參數--操作模式,並且會將當前活動的類名作為文件名。

       如:

SharedPreferences spf = getPreferences(MODE_PRIVATE);

 

      3).使用PreferenceManager類中的 getDefaultSharedPreferences() 方法,它接收一個Context參數,並且用包名作為前綴來命名文件。

       如:

SharedPreferences spf = PreferenceManager.getDefaultSharedPreferences(this);

 

  2.再得到SharedPreferences.Editor對象:

      使用SharedPreferences對象的 edit() 方法。

SharedPreference.Editor editor = spf.edit();

 

  3.開始添加數據:

      以鍵值對的方式寫入數據。

editor.putInt("age",22);
editor.putString("name","Visen");
editor.putBoolean("singleDog",false)

 

  4.提交操作:

editor.commit();

 

從SharedPerferences中讀取數據:

  提供了一系列的get方法進行數據的讀取。如:

String name = editor.getString("name"," ");

 

  如果鍵所對應的值不存在,則填入設定的默認值。

 

 

簡單的保存密碼功能

login.xml 登錄布局頁面

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black"
    android:stretchColumns="1">


    <LinearLayout
        android:layout_height="wrap_content"
        android:background="@color/black"
        android:orientation="vertical">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="240dp"
            android:src="@drawable/image1"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/title"
            android:textSize="40sp"
            android:textColor="@color/red"
            android:gravity="center"
            android:background="@color/cyan"/>
    </LinearLayout>

   <TableRow
       android:layout_marginTop="30dp">
       <TextView
           android:layout_height="wrap_content"
           android:text="@string/account"
           android:textSize="30sp"
           android:textColor="@color/white"/>
       <EditText
           android:id="@+id/account"
           android:layout_height="wrap_content"
           android:inputType="text"
           android:textSize="20sp"
           android:textColor="@color/red"
           android:gravity="center"
           android:singleLine="true"/>
   </TableRow>

    <TableRow>
        <TextView
            android:layout_height="wrap_content"
            android:text="@string/password"
            android:textSize="30sp"
            android:textColor="@color/white"/>
        <EditText
            android:id="@+id/passWord"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:textSize="20sp"
            android:textColor="@color/red"
            android:gravity="center" />
    </TableRow>

    <TableLayout
        android:layout_height="wrap_content"
        android:stretchColumns="0">

        <TableRow>
            <CheckBox
                android:id="@+id/saveSelect"
                android:background="@color/red"
                android:layout_gravity="end"/>
            <TextView
                android:layout_height="wrap_content"
                android:text="@string/saveSelect"
                android:textSize="20sp"
                android:textColor="@color/white"
                android:gravity="center"
                android:layout_gravity="bottom"/>
        </TableRow>

        <TableRow>
            <Button
                android:layout_height="wrap_content"
                android:id="@+id/login"
                android:gravity="center"
                android:layout_span="2"
                android:text="@string/login"
                android:textSize="25sp"
                android:textColor="@color/red"
                android:background="@drawable/black_bt"/>
        </TableRow>
    </TableLayout>
</TableLayout>

 

Login.java

public class Login extends AppCompatActivity {

    private SharedPreferences spf;
    private SharedPreferences.Editor spfe;

    private int num = 0;
    private EditText account = null;
    private EditText passWord = null;
    private CheckBox saveSelect = null;
    private Button login = null ;

    @Override
    protected void onCreate(Bundle saveInstanceState){

        //加載布局
        super.onCreate(saveInstanceState);
        setContentView(R.layout.login);

        //初始化控件
        account = (EditText)findViewById(R.id.account);
        passWord = (EditText)findViewById(R.id.passWord);
        saveSelect = (CheckBox)findViewById(R.id.saveSelect);
        login = (Button)findViewById(R.id.login);

        //使用Context的getSharedPreferences(String name,int mode)方法得到SharedPreferences對象;
        spf = getSharedPreferences("data", Context.MODE_PRIVATE);
        //使用SharedPreferences對象的edit()方法得到 SharedPreferences.Editor 的對象;
        spfe = spf.edit();

        //復選框是否被選中,若為選中狀態,則保存過賬戶,要恢復數據
        if(spf.getBoolean("isSelect",false)){//選中標志,默認值為false
            String acc = spf.getString("account","");
            String pas = spf.getString("passWord","");
            account.setText(acc);
            passWord.setText(pas);
            saveSelect.setChecked(true);
        }

        //設置登錄按鈕監聽事件
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //確認帳號密碼
                if(account.getText().toString().equals("visen") && passWord.getText().toString().equals("dsy402645063!")){

                    //復選框是否被勾選,若被勾選,則需要保存賬戶後登錄;否則直接登錄且不保存賬戶
                    if(saveSelect.isChecked()){
                        saveDate();
                    }else {
                        spfe.clear();
                        spfe.commit();
                    }
                    
                    //頁面跳轉
                    Intent intent = new Intent(Login.this,MainActivity.class);
                    startActivity(intent);
                    finish();
                }else {//賬戶或密碼錯誤
                    Toast.makeText(Login.this, "account or password is invalid", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }

    public void saveDate(){

        //讀取EditText中的內容
        String acc = account.getText().toString();
        String pas = passWord.getText().toString();
        //保存數據
        spfe.putString("account",acc);
        spfe.putString("passWord",pas);
        spfe.putBoolean("isSelect",true);
        //提交
        spfe.commit();
    }
    
    @Override
    public void onBackPressed(){
        num++;
        if(num == 2){
            super.onBackPressed();
        }else{
            Toast.makeText(Login.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
        }
    }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved