aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/pheelicks/utils/SystemPropertiesProxy.java
diff options
context:
space:
mode:
authorfelixpalmer <felixpalmer@gmail.com>2014-01-07 01:14:57 -0800
committerfelixpalmer <felixpalmer@gmail.com>2014-01-07 01:14:57 -0800
commit57e96262c3d8d33a0b2ec26189ea1f06e690f1c3 (patch)
treedf4caea3f75608320a2ef34d7f218d9547be016e /src/com/pheelicks/utils/SystemPropertiesProxy.java
parent4054f8b6e2153b07c5af275372b9609d1019727a (diff)
parenta0227b318b91451daf3fd8d23fb1a5c44a4e187d (diff)
downloadandroid_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.java73
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;
+ }
+}