android开发SP工具类

本文介绍了`SPUtils`工具类在Android开发中的使用,该类用于方便地存储和读取SharedPreference数据,包括字符串、整型、布尔型、浮点型、长整型等类型。提供了保存、获取、删除、清空、是否存在Key等操作,并且包含了一个兼容性的`SharedPreferencesCompat`类以确保`apply()`方法在不同版本上的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.szyc.anantraveldriver.utils;

import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;

import com.google.gson.Gson;
import com.szyc.anantraveldriver.bean.GetAppVersionBean;
import com.szyc.anantraveldriver.bean.UseInfoBean;
import com.szyc.anantraveldriver.bean.VersionBean;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;

/**

  • 项目名称:SilentEagle

  • 类描述:保存数据的通用类

  • 创建人:Administrator

  • 创建时间:2016/4/18 10:27

  • 修改人:Administrator

  • 修改时间:2016/4/18 10:27

  • 修改备注:
    /
    public class SPUtils {
    public SPUtils() {
    /
    cannot be instantiated */
    throw new UnsupportedOperationException(“cannot be instantiated”);
    }

    /**

    • 保存在手机里面的文件名
      */
      public static final String FILE_NAME = “anancar_driver_data”;

    /**

    • 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法

    • @param context

    • @param key

    • @param object
      */
      public static void put(Context context, String key, Object object) {

      SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
      Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = sp.edit();

      if (object instanceof String) {
      editor.putString(key, (String) object);
      } else if (object instanceof Integer) {
      editor.putInt(key, (Integer) object);
      } else if (object instanceof Boolean) {
      editor.putBoolean(key, (Boolean) object);
      } else if (object instanceof Float) {
      editor.putFloat(key, (Float) object);
      } else if (object instanceof Long) {
      editor.putLong(key, (Long) object);
      } else {
      editor.putString(key, object.toString());
      }

      SharedPreferencesCompat.apply(editor);
      }

    /**

    • 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值

    • @param context

    • @param key

    • @param defaultObject

    • @return
      */
      public static Object get(Context context, String key, Object defaultObject) {
      SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
      Context.MODE_PRIVATE);

      if (defaultObject instanceof String) {
      return sp.getString(key, (String) defaultObject);
      } else if (defaultObject instanceof Integer) {
      return sp.getInt(key, (Integer) defaultObject);
      } else if (defaultObject instanceof Boolean) {
      return sp.getBoolean(key, (Boolean) defaultObject);
      } else if (defaultObject instanceof Float) {
      return sp.getFloat(key, (Float) defaultObject);
      } else if (defaultObject instanceof Long) {
      return sp.getLong(key, (Long) defaultObject);
      }
      return defaultObject;
      }

    /**

    • 移除某个key值已经对应的值
    • @param context
    • @param key
      */
      public static void remove(Context context, String key) {
      SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
      Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = sp.edit();
      editor.remove(key);
      SharedPreferencesCompat.apply(editor);
      }

    /**

    • 清除所有数据
    • @param context
      */
      public static void clear(Context context) {
      SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
      Context.MODE_PRIVATE);
      SharedPreferences.Editor editor = sp.edit();
      editor.clear();
      SharedPreferencesCompat.apply(editor);
      }

    /**

    • 查询某个key是否已经存在
    • @param context
    • @param key
    • @return
      */
      public static boolean contains(Context context, String key) {
      SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
      Context.MODE_PRIVATE);
      return sp.contains(key);
      }

    /**

    • 返回所有的键值对
    • @param context
    • @return
      */
      public static Map<String, ?> getAll(Context context) {
      SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
      Context.MODE_PRIVATE);
      return sp.getAll();
      }

    /**

    • 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类

    • @author zhy
      */
      private static class SharedPreferencesCompat {
      private static final Method sApplyMethod = findApplyMethod();

      /**

      • 反射查找apply的方法

      • @return
        */
        @SuppressWarnings({“unchecked”, “rawtypes”})
        private static Method findApplyMethod() {
        try {
        Class clz = SharedPreferences.Editor.class;
        return clz.getMethod(“apply”);
        } catch (NoSuchMethodException e) {
        e.printStackTrace();
        }

        return null;
        }

      /**

      • 如果找到则使用apply执行,否则使用commit
      • @param editor
        */
        public static void apply(SharedPreferences.Editor editor) {
        try {
        if (sApplyMethod != null) {
        sApplyMethod.invoke(editor);
        return;
        }
        } catch (IllegalAccessException e) {
        e.printStackTrace();
        } catch (InvocationTargetException e) {
        e.printStackTrace();
        }
        editor.commit();
        }
        }

    /**

    • 保存用户数据
    • @param context 上下文
    • @param jsonUser 用户实体类转成json字符串
      */
      public static void saveUser(Context context,String jsonUser){
      put(context, “userinfo”, jsonUser);
      }

    /**

    • 获取本地保存的用户数据(主要保存)
    • @param context 上下文
    • @return 用户实体类
      */
      public static UseInfoBean getUser(Context context){
      String useStr=get(context, “userinfo”, “”).toString();
      if(TextUtils.isEmpty(useStr)){
      return new UseInfoBean();
      }else{
      return new Gson().fromJson(useStr, UseInfoBean.class);
      }
      }

    /**
    *

    • @param context
    • @param :保存签退状态:true:签退了。false:没签退; 默认 false,没签退
      */
      public static void putLoginOutState(Context context,boolean loginState){ //renhaijun add
      put(context, “LoginOutState”, loginState); // 只要调用这个方法,则 表明 已经 点击过签退了。
      }

    /**
    *

    • @param context
    • @return :签退状态:true:签退了。false:没签退; 默认 false,没签退.
      */
      public static boolean getLoginOutState(Context context){ //renhaijun add
      boolean loginOutState = (boolean) get(context, “LoginOutState”, false);
      return loginOutState;
      }

    /**

    • 保存手机号.在静默登录时,通过手机号 是否为“” 来判断 是否退出登录了。
    • @param context
    • @param phoneStr
      */
      public static void putPhone(Context context,String phoneStr){ //renhaijun add
      put(context,“phoneNumber”,phoneStr);
      }

    /**

    • 获取手机号.在静默登录时,通过手机号 是否为“” 来判断 是否退出登录了。
    • @param context
    • @return
      */
      public static String getPhone(Context context){ //renhaijun add
      String phone = (String) get(context, “phoneNumber” , “”);
      return phone;
      }

    /**

    • 保存密码
    • @param context
    • @param pwdStr
      */
      public static void putPassword(Context context, String pwdStr){ //renhaijun add
      put(context,“password” , pwdStr);
      }

    /**

    • 获取密码
    • @param context
    • @return
      */
      public static String getPassword(Context context){ //renhaijun add
      String password = (String) get(context,“password”,"");
      return password;
      }
      //上班之前是否认证人脸
      public static void putIsRz(Context context, String pwdStr){ //renhaijun add
      put(context,“isrz” , pwdStr);
      }

    /**

    • 获取密码
    • @param context
    • @return
      /
      public static String getIsRz(Context context){ //renhaijun add
      String isrz = (String) get(context,“isrz”,“2”);
      return isrz;
      }
      /
      *
    • 保存头像链接
    • @param context
    • @param headUrl
      */
      public static void putHeadUrl(Context context, String headUrl){ //renhaijun add
      put(context,“headUrl” , headUrl);
      }

    public static String getHeadUrl(Context context){ //renhaijun add
    String headUrl = (String) get(context,“headUrl”,"");
    return headUrl;
    }

    /**

    • 保存 广告页 链接
    • @param context
    • @param headUrl
      /
      public static void putADUrl(Context context, String headUrl){ //renhaijun add
      put(context,“ADUrl” , headUrl);
      }
      /
      *
    • 获取 广告页 链接
    • @param context
    • @param
      */
      public static String getADUrl(Context context){ //renhaijun add
      String headUrl = (String) get(context,“ADUrl”,"");
      return headUrl;
      }

    /**

    • 保存版本更新信息 renhaijun add
    • @param context 上下文
    • @param jsonUser 用户实体类转成json字符串
      */
      public static void saveCommonInfo(Context context, String jsonUser) {
      if (!TextUtils.isEmpty(jsonUser)) {
      put(context, “commoninfo”, jsonUser);
      }
      }

    /**

    • 保存版本更新信息 renhaijun add
    • @param context 上下文
    • @return 用户实体类
      */
      public static VersionBean getCommonInfo(Context context) {
      String useStr = get(context, “commoninfo”, “”).toString();
      if (TextUtils.isEmpty(useStr)) {
      return new VersionBean();
      } else {
      return new Gson().fromJson(useStr, VersionBean.class);
      }
      }

    /**

    • renhaijun add 保存修改后的性别
    • @param context
    • @param sex
      */
      public static void saveSex(Context context,String sex){
      if (!TextUtils.isEmpty(sex)) {
      put(context, “sex”, sex);
      }
      }

    /**

    • renhaijun add
    • 获取保存的修改后的性别
    • @param context
    • @return
      */
      public static String getSex(Context context){
      String sex = get(context,“sex”,"").toString();
      return sex;
      }

    /**

    • renhaijun add 保存客服电话
    • @param context
    • @param phone
      */
      public static void saveContactPhone(Context context, String phone){
      if (!TextUtils.isEmpty(phone)){
      put(context,“ContactPhone”, phone);
      }
      }

    /**

    • renhaijun add 获取客服电话
    • @param context
    • @return
      */
      public static String getContactPhone(Context context){
      String phone = get(context,“ContactPhone”,"").toString();
      return phone;
      }

    /**

    • 保存首次获取验证码的时间 renhaijun add
    • @param context
    • @param firstCurrentTime
      */
      public static void saveFirstCodeTime(Context context, String firstCurrentTime){
      put(context,“saveFirstCodeTime”, firstCurrentTime);
      }

    /**

    • 保存首次获取验证码的时间 renhaijun add
    • @param context
    • @param
      */
      public static String getFirstCodeTime(Context context ){
      String saveFirstCodeTime = (String) get(context,“saveFirstCodeTime”,"");
      return saveFirstCodeTime;
      }

    /**

    • 保存 token renhaijun add
    • @param context
    • @param token
      */
      public static void putToken(Context context, String token){
      put(context,“token”, token);
      }

    /**

    • 保存 token renhaijun add
    • @param context
    • @param
      */
      public static String getToken(Context context ){
      String token = (String) get(context,“token”,"");
      return token;
      }

    /**

    • 保存 app版本管理数据 renhaijun add
    • @param context 上下文
    • @param jsonUser 用户实体类转成json字符串
      */
      public static void putAppVersionBean(Context context,String jsonUser){
      put(context, “GetAppVersionBean”, jsonUser);
      }

    /**

    • 获取 app版本管理数据 renhaijun add
    • @param context 上下文
    • @return 用户实体类
      */
      public static GetAppVersionBean getAppVersionBean(Context context){
      String useStr=get(context, “GetAppVersionBean”, “”).toString();
      if(TextUtils.isEmpty(useStr)){
      return new GetAppVersionBean();
      }else{
      return new Gson().fromJson(useStr, GetAppVersionBean.class);
      }
      }

    /**

    • 保存是否 选择了智能wifi下载 版本更新 renhaijun add
    • @param context
    • @param wifidownload true:wifi智能下载。false:非wifi智能下载
      */
      public static void putWifiDownload(Context context, boolean wifidownload){
      put(context,“wifiDownload”, wifidownload);
      }

    /**

    • 获取是否 选择了智能wifi下载 版本更新 renhaijun add
    • @param context
      */
      public static boolean getWifiDownload(Context context){
      boolean wifidownload = (boolean) get(context,“wifiDownload”,false);
      return wifidownload;
      }
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值