package com.demo.utils; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Map; import android.content.Context; import android.content.SharedPreferences; public class SpUtils { /** * 保存在手机里面的文件名 */ public static final String FILE_NAME = "share_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 null; } /** * 移除某个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方法的一个兼容类 * */ 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) { } return null; } /** * 如果找到则使用apply执行,否则使用commit * * @param editor */ public static void apply(SharedPreferences.Editor editor) { try { if (sApplyMethod != null) { sApplyMethod.invoke(editor); return; } } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } editor.commit(); } } }
相关推荐
封装了SharedPreferences的所有功能。支持java基本类型的存取数据等功能。
简单的Android SharedPreferences封装
SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString(key, value); prefs.setBool(key, value) prefs.setDouble(key, value) prefs.setInt(key, value) prefs.setStringList(key, ...
由于之前项目一直用到SharedPreferences ,但android 自动的,每次都要创建Editor,重复代码很多,着实令我心烦,于是自己小小的做了一下封装,现在分享给大家!
自己封装的安卓首选项(SharedPreferences)工具类,简单方便好用,注意最后请调用commit()方法
一个关于SharedPreferences的工具类,SharedPreferencesHelper封装,让SharedPreferences运用简单。
主要介绍了Android开发中4个常用的工具类,包括Toast管理、SharedPreferences存储管理、网络操作及屏幕操作等功能的封装类,需要的朋友可以参考下
此篇文章紧做关于该项目的工具类封装与首页引导页开发,后续功能实现请关注后续文章!!! 此篇文章完成后效果展示: 一.工具类的封装—Log封装 在utils包下,创建L类,代码如下: package ...
SharedPreferences工具类。 StringUtil.java 字符串处理工具类。 SystemIntentUtil.java 系统Intent工具类,常用的系统Intent跳转函数,如:打...
Android 开发常用工具类后续将封装更多的工具类,将尝试封装一些跟View相关的工具类,像Adapter....,功能将不断完善,同时感谢每一位开源者的贡献,本工具类参考了很多网上工具类。1.由于水平有限,难免有Bug,如果有...
一个简单的开源Android工具类库,提供许多常用的类帮助我们开发程序。 AndroidCommon 一个简单的开源Android工具类库,提供许多常用的类帮助我们开发程序。 These are the Android Common Utils. Class ...
支持自定义实现功能类 设计模式: 单例+Builder+策略模式+状态模式+工厂模式 网络框架(Okhttp+Retrofit+Rxjava)图片框架(Glide)数据存储层Sqlite (原生sqlite+ORM框架的封装)SharedPreferences(工具类)Files...
配合“安卓存储之SharedPreference文章”使用,简单的工具封装类
内置常用工具类:package、random、file...,提供的都是非常常用的方法 内置加密工具类 XCodec,你想要的加密姿势都有 默认使用okhttputils作为api请求,可任性切换retrofit等其他库 引入三方库极少
语言:|中文简体Flutter常用工具类库flustars依赖于Dart常用工具类库 ,以及对其他第三方库封装,致力于对大家共享简单易用工具类。如果您有好的工具类欢迎PR。目前包含SharedPreferences Util,Screen Util,...
1、volley ... (1) JSON,图像等的异步下载; (2) 网络请求的排序(scheduling) (3) 网络请求的优先级处理 (4) 缓存 (5) 多级别取消请求 (6) 和Activity和生命周期的联动(Activity结束时... (10) 一系列工具类