Android使用SharedPreferences保存账号密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android使用SharedPreferences保存账号密码相关的知识,希望对你有一定的参考价值。

       有很多的应用都会有保存密码和账号的功能,比如QQ。接下来就讲讲使用SharedPreferences来保存密码和账号,也许有些人会考虑的数据库,但是我个人认为对于保存简单的数据,使用的数据库就大材小用了,SharedPreferences比较轻量级

首先写好布局,只有两个输入框和一个按钮

<EditText
        android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number" />

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/save"
        android:text="保存"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

技术分享

获取取控件

    private EditText number;
    private EditText password;
    private Button save;

     number = (EditText) findViewById(R.id.number);
     password = (EditText) findViewById(R.id.password);
     save = (Button) findViewById(R.id.save);

在获取控件之后,还要获取SharedPreferences,第一参数为保存的文件名,第二个为保存的模型,当文件存在就读取,如果不存在就创建

private SharedPreferences sp;

//
第一参数为保存的文件名,第二个为保存的模型,当文件存在就读取,如果不存在就创建 sp = getSharedPreferences("info",MODE_PRIVATE);

增加按钮点击事件,点击按钮保存账号和密码

save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取输入框的账号和密码
                String numberStr = number.getText().toString().trim();
                String passwordStr = password.getText().toString().trim();
                //判断是否为空
                if (numberStr.isEmpty() || passwordStr.isEmpty()){
                    Toast.makeText(getApplicationContext(),"账号或密码不能为空",Toast.LENGTH_SHORT).show();
                }else {
                    //获取Editor
                    SharedPreferences.Editor editor = sp.edit();
                    //输入内容
                    editor.putString("number",numberStr);
                    editor.putString("password",passwordStr);
                    //必须提交才会生效,也可以使用apply
                    editor.commit();
                    Toast.makeText(getApplicationContext(),"保存成功",Toast.LENGTH_SHORT).show();
                }
            }
        });

当我们保存账号和密码后,想要在第二次打开应用时直接写密码和账号,还有在加载页面时获取数据

//获取info文件的内容,第一参数为保存时的key,第二个是如果获取不到的默认值
        String numberStr1 = sp.getString("number","");
        String passwordStr2 = sp.getString("password","");
        number.setText(numberStr1);
        password.setText(passwordStr2);

效果图

 技术分享

这个info.xml的文件保存在data/data/包名/shared_prefs/info.xml,可以看到是以XML格式保存的

 技术分享

技术分享

最后再来理一理整个思路

保存

①通过getSharedPreferences("文件名",模式)获得SharedPreferences

②通过sp.edit()获取Editor

③使用editor调用putXXX(key,value)保存数据

④使用editor调用apply()或者commit()才会生效

读取

①通过getSharedPreferences("文件名",模式)获得SharedPreferences

②通过sp.getXXX(key,defValue)直接可以获得数据

 


以上是关于Android使用SharedPreferences保存账号密码的主要内容,如果未能解决你的问题,请参考以下文章

Android入门第51天-使用Android的SharedPreference存取信息

android----SharedPreference

Android入门第52天-在SharedPreference中使用加密

Android简单介绍SharedPreference,内部文件,sdcard数据存储

[android] sharedPreference入门

Android中如何设置SharedPreference文件名称?