关于Android的SharedPreferences的用法和封装自己的配置文件管理工具类

这几年经历了太多事情,决定回归技术,深耕一下,这次要有深度+数学

一般的App都需要使用外存存储一些用户的信息,如用户名,密码,是否登录,token等来判断用户是否需要重新登录,这里提供一种方式,本地存储配置文件的方式

Android的工具类SharedPreferences,这个类本质是个接口类,对应底层文件读写,故内部没有实现

为了方便不用每次都写一下这个类,我准备直接封装一个自己的配置文件读写类MSharedPreferences,实现如下,内部使用静态方法和类定义,方便直接获取

代码如下:


/**
 * Created by Administrator on 2021/9/27.
 */
public class MSharedPreferences {

    private static MSharedPreferences mSharedPreferences;
    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editor;
    private Context context;
    private String str;

    public static MSharedPreferences getmSharedPreferences() {
        if (mSharedPreferences == null) {
            mSharedPreferences = new MSharedPreferences();
        }
        return mSharedPreferences;
    }

    /**
     * 不需要
     * @param context
     */
    public void init(Context context){

        sharedPreferences = context.getSharedPreferences(MyConfig.APP_CONF, Context.MODE_PRIVATE);
        editor = sharedPreferences.edit();
    }

    /**
     *
     * @param context
     */
    public void delete(Context context)  {
        str = context.getPackageName();
        Log.e("guanzedong", str);
        //这里实质上只是创建了个实例,并不是个文件
        // file.createNewFile();当且仅当文件不存在时创建,否则会抛出异常
        //public boolean createNewFile() throws IOException
        File file = new File("/data/data/" + context.getPackageName().toString() + "/shared_prefs", MyConfig.APP_CONF);
        if(file.exists()){
            file.delete();
            Toast.makeText(context, "删除配置文件成功!!!", Toast.LENGTH_SHORT).show();
        }

    }

    public void clear(Context context){
        if(editor != null){
            editor.clear().commit();
            Toast.makeText(context, "你好", Toast.LENGTH_SHORT).show();
        }
    }

    public void putString(String key, String value){
        editor.putString(key,value);
    }
    public void putInt(String key, int value){
        editor.putInt(key,value);
    }
    public void putLong(String key, long value){editor.putLong(key,value);}
    public void putDouble(String key, double value){editor.putFloat(key, (float) value);}
    public void putBoolean(String key, boolean value){editor.putBoolean(key,value);}
    public void commit(){
        editor.commit();
    }
    public String getString(String key){
        return sharedPreferences.getString(key,"");
    }
    public int getInt(String key){return sharedPreferences.getInt(key,-1);    }
    public long getLong(String key){return sharedPreferences.getLong(key,0);}
    public float getFloat(String key){return sharedPreferences.getFloat(key,0);}
    public boolean getBoolean(String key){return sharedPreferences.getBoolean(key,false);}



}



实现自己的配置文件读写类之后,直接在界面内直接调用即可

mSharedPreferences = MSharedPreferences.getmSharedPreferences();
        mSharedPreferences.init(this);
        mSharedPreferences.clear(this);

进行读取操作即可


/**
*读取操作
*/
MyConfig.sellername = mSharedPreferences.getString(MyConfig.SELLERNAME);
        MyConfig.sellerpwd =  mSharedPreferences.getString(MyConfig.PASSWORD);
        MyConfig.is_login = mSharedPreferences.getBoolean(MyConfig.IS_LOGIN);

/**
*写入操作,记得commit一下
*/
mSharedPreferences.putString(MyConfig.SELLERNAME, MyConfig.sellername);
                   mSharedPreferences.putString(MyConfig.PASSWORD, MyConfig.sellerpwd);
                mSharedPreferences.putBoolean(MyConfig.IS_LOGIN, MyConfig.is_login);
                mSharedPreferences.commit();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在Android Studio中创建一个登录页面,包括两个EditText控件,分别用于输入用户名和密码,还有一个Button按钮用于提交登录信息。在这个页面的Java代码中,使用SharedPreferences类来保存用户的登录信息,使用Map类来验证用户输入的信息是否正确。 下面是一个示例代码: ``` public class LoginActivity extends AppCompatActivity implements View.OnClickListener { private EditText etUsername, etPassword; private Button btnLogin; private SharedPreferences sharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); etUsername = findViewById(R.id.et_username); etPassword = findViewById(R.id.et_password); btnLogin = findViewById(R.id.btn_login); btnLogin.setOnClickListener(this); sharedPreferences = getSharedPreferences("user_info", MODE_PRIVATE); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_login: String username = etUsername.getText().toString().trim(); String password = etPassword.getText().toString().trim(); Map<String, String> userInfo = (Map<String, String>) sharedPreferences.getAll(); if (userInfo.containsKey(username) && userInfo.get(username).equals(password)) { // 登录成功 Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show(); } else { // 登录失败 Toast.makeText(this, "用户名或密码错误", Toast.LENGTH_SHORT).show(); } break; } } /** * 保存用户信息 * @param username 用户名 * @param password 密码 */ private void saveUserInfo(String username, String password) { SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(username, password); editor.apply(); } } ``` 在这个示例代码中,我们首先定义了三个成员变量,分别是EditText控件etUsername和etPassword,以及Button控件btnLogin,还有一个SharedPreferences对象sharedPreferences,用于保存用户的登录信息。 在onCreate()方法中,我们初始化了控件,并且获取了SharedPreferences对象。在onClick()方法中,我们首先获取到用户输入的用户名和密码,然后使用getAll()方法获取保存在SharedPreferences中的所有用户信息,返回一个Map对象。 接着,我们使用containsKey()方法检查输入的用户名是否存在于Map对象中,如果存在,再使用get()方法获取对应的密码,与用户输入的密码进行比较,如果相等,则登录成功,否则登录失败。 最后,我们定义了一个saveUserInfo()方法,用于保存用户的登录信息。在实际的应用中,可以在注册页面或者设置页面中调用这个方法来保存用户的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值