/** * Copyright 2013, Haruki Hasegawa * * Licensed under the MIT license: * http://creativecommons.org/licenses/MIT/ */ /** * from http://stackoverflow.com/questions/2641111/where-is-android-os-systemproperties */ package com.pheelicks.utils; import java.lang.reflect.Method; import android.content.Context; import android.util.Log; public class SystemPropertiesProxy { private static final String TAG = "SystemPropertiesProxy"; /** * Get the value for the given key, returned as a boolean. Values 'n', 'no', * '0', 'false' or 'off' are considered false. Values 'y', 'yes', '1', 'true' * or 'on' are considered true. (case insensitive). If the key does not exist, * or has any other value, then the default result is returned. * * @param key the key to lookup * @param def a default value to return * @return the key parsed as a boolean, or def if the key isn't found or is * not able to be parsed as a boolean. * @throws IllegalArgumentException if the key exceeds 32 characters */ public static Boolean getBoolean(Context context, String key, boolean def) throws IllegalArgumentException { return getBoolean(context.getClassLoader(), key, def); } public static Boolean getBoolean(ClassLoader cl, String key, boolean def) throws IllegalArgumentException { Boolean ret = def; try { @SuppressWarnings("rawtypes") Class SystemProperties = cl.loadClass("android.os.SystemProperties"); // Parameters Types @SuppressWarnings("rawtypes") Class[] paramTypes = new Class[2]; paramTypes[0] = String.class; paramTypes[1] = boolean.class; @SuppressWarnings("unchecked") Method getBoolean = SystemProperties.getMethod("getBoolean", paramTypes); // Parameters Object[] params = new Object[2]; params[0] = new String(key); params[1] = Boolean.valueOf(def); ret = (Boolean) getBoolean.invoke(SystemProperties, params); } catch (IllegalArgumentException iAE) { throw iAE; } catch (Exception e) { Log.e(TAG, "getBoolean(context, key: " + key + ", def:" + def + ")", e); ret = def; } return ret; } }