diff options
author | felixpalmer <felixpalmer@gmail.com> | 2014-01-07 01:14:57 -0800 |
---|---|---|
committer | felixpalmer <felixpalmer@gmail.com> | 2014-01-07 01:14:57 -0800 |
commit | 57e96262c3d8d33a0b2ec26189ea1f06e690f1c3 (patch) | |
tree | df4caea3f75608320a2ef34d7f218d9547be016e /src/com/pheelicks/utils/SystemPropertiesProxy.java | |
parent | 4054f8b6e2153b07c5af275372b9609d1019727a (diff) | |
parent | a0227b318b91451daf3fd8d23fb1a5c44a4e187d (diff) | |
download | android_external_android-visualizer-57e96262c3d8d33a0b2ec26189ea1f06e690f1c3.tar.gz android_external_android-visualizer-57e96262c3d8d33a0b2ec26189ea1f06e690f1c3.tar.bz2 android_external_android-visualizer-57e96262c3d8d33a0b2ec26189ea1f06e690f1c3.zip |
Merge pull request #6 from h6ah4i/feature/tunnel_player_workaroundmaster
Implement Tunnel Player workaround code
Diffstat (limited to 'src/com/pheelicks/utils/SystemPropertiesProxy.java')
-rw-r--r-- | src/com/pheelicks/utils/SystemPropertiesProxy.java | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/com/pheelicks/utils/SystemPropertiesProxy.java b/src/com/pheelicks/utils/SystemPropertiesProxy.java new file mode 100644 index 0000000..6e49979 --- /dev/null +++ b/src/com/pheelicks/utils/SystemPropertiesProxy.java @@ -0,0 +1,73 @@ +/** + * 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; + } +} |