案例:
项目实现:
SharePreferences对象中提供了一系列的get方法用于对存储进行读取,每种get方法都对应了SharePreferences.Editor中的一种put方法,这些get方法都接收两个参数,第一个是键,传入存入数据时使用的键就可以得到相应的值;第二个方法参数是默认值,即表示当传入的键找不到对应的值时会以什么样的默认值返回。
下面只给出关键代码,界面设计不再给出:
package activitytest.example.com.case_login; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private SharedPreferences pref; private SharedPreferences.Editor editor; private EditText accountEdit; private EditText passwordEdit; private Button login; private CheckBox rememberPass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pref= PreferenceManager.getDefaultSharedPreferences(this); accountEdit=(EditText)findViewById(R.id.account); passwordEdit=(EditText)findViewById(R.id.password); login=(Button)findViewById(R.id.login); rememberPass=(CheckBox)findViewById(R.id.remember_pass); boolean isRemenber=pref.getBoolean("remember_password",false); if(isRemenber){ //将账号和密码都设置到文本中 String account=pref.getString("account",""); String password=pref.getString("password",""); accountEdit.setText(account); passwordEdit.setText(password); rememberPass.setChecked(true); } login.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ String account=accountEdit.getText().toString(); String password=passwordEdit.getText().toString(); //如果账号是admin且密码是123456就认为登陆成功 if(account.equals("admin")&&password.equals("123456")){ editor=pref.edit(); if(rememberPass.isChecked()){ editor.putBoolean("remember_password",true); editor.putString("account",account); editor.putString("password",password); }else { editor.clear(); } editor.apply(); Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); finish(); }else{ Toast.makeText(MainActivity.this,"account or password is invalid",Toast.LENGTH_SHORT).show(); } } }); } }
2、当用户选中了记住密码复选框,并成功登陆过一次,remember_password键对应的值就是true了,这时候如果再重新启动登陆界面们就会从SharePreferences文件中将保存的账号和密码都读取出来,并填充到文本输入框中,然后记住密码复选框选中,这样就完成记住密码的功能了。
3、将密码以明文的形式存储在SharePreferences文件中是非常不安全的,因此正式的项目中还需要结合一定的加密算法来对密码进行保护。