summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/base/utils
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2022-07-19 14:39:11 +0200
committercyBerta <cyberta@riseup.net>2022-07-19 19:33:47 +0200
commit5b244cd71989b504d70936ce5575dc947cb5ab6b (patch)
tree5aab488eff3c87fdf4ad4c33660f070d3b3ad24b /app/src/main/java/se/leap/bitmaskclient/base/utils
parent6bc3a79e6d09a8fa1857f1d502a87c1c0633be35 (diff)
hide tethering option on CalyxOS 11 (SDK 30)
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/utils')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java5
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/SystemPropertiesHelper.java36
2 files changed, 41 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
index 8ac5baf0..102756c4 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
@@ -273,6 +273,11 @@ public class ConfigHelper {
Matcher matcher = IPv4_PATTERN.matcher(ipv4);
return matcher.matches();
}
+
+ public static boolean isCalyxOSWithTetheringSupport(Context context) {
+ return SystemPropertiesHelper.contains("ro.calyxos.version", context) &&
+ Build.VERSION.SDK_INT >= Build.VERSION_CODES.R;
+ }
// ObfsVpnHelper class allows us to mock BuildConfig.use_obfsvpn while
// not mocking the whole ConfigHelper class
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/SystemPropertiesHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/SystemPropertiesHelper.java
new file mode 100644
index 00000000..b148f685
--- /dev/null
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/SystemPropertiesHelper.java
@@ -0,0 +1,36 @@
+package se.leap.bitmaskclient.base.utils;
+
+import android.content.Context;
+
+import java.lang.reflect.Method;
+
+
+public class SystemPropertiesHelper {
+
+ /**
+ * Checks if SystemProperties contains a given key using reflection
+ * @return true if reflection was successful and the key was found
+ */
+ public static boolean contains(String key, Context context) {
+ String result = null;
+ try {
+ ClassLoader cl = context.getClassLoader();
+ @SuppressWarnings("rawtypes")
+ Class SystemProperties = cl.loadClass("android.os.SystemProperties");
+ @SuppressWarnings("rawtypes")
+ Class[] paramTypes= new Class[1];
+ paramTypes[0]= String.class;
+
+ Method get = SystemProperties.getMethod("get", paramTypes);
+ Object[] params= new Object[1];
+ params[0]= key;
+
+ result = (String) get.invoke(SystemProperties, params);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return result != null;
+ }
+}
+