/** * 向文件写入属性值 * * @param editor 指定的编辑器 * @param field 要写入的属性 * @param obj 取值对象 * @param pre key前缀 */ private void put(SharedPreferences.Editor editor, Field field, Object obj, String pre) { // 关闭属性访问权限检查 field.setAccessible(true); try { Log.v(LOG_TAG + "put", "field type is " + field.getType().getName()); Log.v(LOG_TAG + "put", "field name is " + field.getName()); Log.v(LOG_TAG + "put", "field value is " + field.get(obj)); // 是否需要加密 if (cipher != null && field.isAnnotationPresent(Encrypt.class)) { Log.v(LOG_TAG + "put", "field " + field.getName() + " use encrypt"); Object data = field.get(obj); if (data != null) { editor.putString(pre + "." + field.getName(), cipher.encrypt(String.valueOf(data))); } return; } // 根据属性类型选择操作 switch (field.getType().getName()) { case "java.lang.String": editor.putString(pre + "." + field.getName(), (String) field.get(obj)); break; case "int": editor.putInt(pre + "." + field.getName(), field.getInt(obj)); break; case "boolean": editor.putBoolean(pre + "." + field.getName(), field.getBoolean(obj)); break; case "float": editor.putFloat(pre + "." + field.getName(), field.getFloat(obj)); break; case "long": editor.putLong(pre + "." + field.getName(), field.getLong(obj)); break; } } catch (IllegalAccessException e) { Log.d(LOG_TAG + "put", "IllegalAccessException is " + e.getMessage()); } }