安卓开发学习10-1:数据存储:Shared Preferences存储


 

解析

什么是Shared Perferences

应用场景

  • 配置信息
  • 主题信息
  • 游戏的积分信息等

存储路径

在本应用中的data-data-应用包-自定义名称xml文件下保存写入的数据信息

使用

获取步骤

 

读取步骤

实例

代码

1、需求:实现自动登录,例如qq的可以设置自动登录,然后下一次就不用再写登录账号密码

2、activity_main.xml:简易实现输入框

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="QQ号/手机号/邮箱"
        android:layout_marginTop="300dp"/>
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="密码"
        android:layout_marginTop="20dp"/>
    <ImageButton
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/login"
        android:layout_gravity="center"/>
LinearLayout>

3、MainActivit.java

public class MainActivity extends AppCompatActivity {
    //定义后台账号和密码
    private String name = "fxz", pwd = "123";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取编辑框用户名和密码
        EditText username_EditText = findViewById(R.id.username);
        EditText password_EditText = findViewById(R.id.password);
        //获取登录按键
        ImageButton login = findViewById(R.id.login);
        //获取Shared Preferences对象
        final SharedPreferences sharedPreferences = getSharedPreferences("qqAutoLogin", MODE_PRIVATE);
        /**********实现自动登录功能************/
        //获取账号信息
        String username = sharedPreferences.getString("username", null);
        String password = sharedPreferences.getString("password", null);
        //判断用户名和密码是否为空
        if (username != null && password != null) {
            //如果用户名和密码相同,实现自动登录
            if (username.equals(name) && password.equals(pwd)) {
                //通过Intent跳转登录
                Intent intent = new Intent(MainActivity.this, MessageActivity.class);
                //启动跳转界面
                startActivity(intent);
            }
        } else {
            /**********实现手动登录并储存账号和密码************/
            login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //获取输入的账号和密码
                    String local_username=username_EditText.getText().toString();
                    String local_password=password_EditText.getText().toString();
                    //获取Editor对象
                    SharedPreferences.Editor editor=sharedPreferences.edit();
                    if(local_username.equals(name) && local_password.equals(pwd)){
                        //这里保存账号和密码并提交有些多余
                        editor.putString("username",local_username);
                        editor.putString("password",local_password);
                        //提交信息
                        editor.commit();
                        //通过Intent跳转登录
                        Intent intent = new Intent(MainActivity.this, MessageActivity.class);
                        //启动跳转界面
                        startActivity(intent);
                        Toast.makeText(MainActivity.this, "已保存账号和密码", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(MainActivity.this, "账号和密码错误", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }
}

 文件查看

使用Android Studio