diff --git a/GalaxyWearable/README.md b/GalaxyWearable/README.md index 834e0d5..f9c8cb7 100644 --- a/GalaxyWearable/README.md +++ b/GalaxyWearable/README.md @@ -4,4 +4,8 @@ Enables running Samsung's GalaxyWearable app and companions on modded Samsung de This is an Xposed variant of [`Linux4/GalaxyWearable`](https://github.com/Linux4/GalaxyWearable). -Additionally disables the forced app update prompt when opening the app. +Additional features: +* Disable the forced app update prompt when opening the app +* Disable the required phone permission +* Disable nearby WiFi devices permission +* Disable fine location permission diff --git a/GalaxyWearable/src/main/AndroidManifest.xml b/GalaxyWearable/src/main/AndroidManifest.xml index a85f6f3..f3297bd 100644 --- a/GalaxyWearable/src/main/AndroidManifest.xml +++ b/GalaxyWearable/src/main/AndroidManifest.xml @@ -2,7 +2,10 @@ - + UpdateManagerClass = XposedHelpers.findClass("com.samsung.android.app.twatchmanager.update.UpdateManager", lpparam.classLoader); XposedHelpers.findAndHookMethod( diff --git a/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableLocationPermissionHook.java b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableLocationPermissionHook.java new file mode 100644 index 0000000..b7be825 --- /dev/null +++ b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableLocationPermissionHook.java @@ -0,0 +1,19 @@ +package com.programminghoch10.GalaxyWearable; + +import java.util.ArrayList; + +import de.robv.android.xposed.IXposedHookLoadPackage; +import de.robv.android.xposed.XposedHelpers; +import de.robv.android.xposed.callbacks.XC_LoadPackage; + +public class DisableLocationPermissionHook implements IXposedHookLoadPackage { + @SuppressWarnings("unchecked") + @Override + public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { + if (!lpparam.packageName.equals("com.samsung.android.app.watchmanager")) return; + Class PermissionsUtilsClass = + XposedHelpers.findClass("com.samsung.android.app.watchmanager.setupwizard.permission.PermissionUtils", lpparam.classLoader); + ArrayList INITIAL_PERMISSION = (ArrayList) XposedHelpers.getStaticObjectField(PermissionsUtilsClass, "INITIAL_PERMISSION"); + INITIAL_PERMISSION.remove("android.permission.ACCESS_FINE_LOCATION"); + } +} diff --git a/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableNearbyWifiDevicesPermissionHook.java b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableNearbyWifiDevicesPermissionHook.java new file mode 100644 index 0000000..870521f --- /dev/null +++ b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableNearbyWifiDevicesPermissionHook.java @@ -0,0 +1,23 @@ +package com.programminghoch10.GalaxyWearable; + +import java.util.ArrayList; + +import de.robv.android.xposed.IXposedHookLoadPackage; +import de.robv.android.xposed.XposedHelpers; +import de.robv.android.xposed.callbacks.XC_LoadPackage; + +public class DisableNearbyWifiDevicesPermissionHook implements IXposedHookLoadPackage { + /* + I don't know what this app needs nearby WiFi devices for... + */ + + @SuppressWarnings("unchecked") + @Override + public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { + if (!lpparam.packageName.equals("com.samsung.android.app.watchmanager")) return; + Class PermissionsUtilsClass = + XposedHelpers.findClass("com.samsung.android.app.watchmanager.setupwizard.permission.PermissionUtils", lpparam.classLoader); + ArrayList INITIAL_PERMISSION = (ArrayList) XposedHelpers.getStaticObjectField(PermissionsUtilsClass, "INITIAL_PERMISSION"); + INITIAL_PERMISSION.remove("android.permission.NEARBY_WIFI_DEVICES"); + } +} diff --git a/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableTelephonyPermissionHook.java b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableTelephonyPermissionHook.java new file mode 100644 index 0000000..08c16d7 --- /dev/null +++ b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableTelephonyPermissionHook.java @@ -0,0 +1,28 @@ +package com.programminghoch10.GalaxyWearable; + +import java.util.ArrayList; + +import de.robv.android.xposed.IXposedHookLoadPackage; +import de.robv.android.xposed.XposedHelpers; +import de.robv.android.xposed.callbacks.XC_LoadPackage; + +public class DisableTelephonyPermissionHook implements IXposedHookLoadPackage { + /* + The app says the phone permission is used to "synchronize contacts". + I think this is wrong, since contacts aren't requested, + instead I think read-only access to the phone number and the phone state are used + to automatically enable transparency mode while the user is in a call. + Either way, this should be an optional permission. + */ + + @SuppressWarnings("unchecked") + @Override + public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { + if (!lpparam.packageName.equals("com.samsung.android.app.watchmanager")) return; + Class PermissionsUtilsClass = + XposedHelpers.findClass("com.samsung.android.app.watchmanager.setupwizard.permission.PermissionUtils", lpparam.classLoader); + ArrayList INITIAL_PERMISSION = (ArrayList) XposedHelpers.getStaticObjectField(PermissionsUtilsClass, "INITIAL_PERMISSION"); + INITIAL_PERMISSION.remove("android.permission.READ_PHONE_STATE"); + INITIAL_PERMISSION.remove("android.permission.READ_PHONE_NUMBERS"); + } +} diff --git a/GalaxyWearable/src/main/res/drawable/adaptive_logo_background.xml b/GalaxyWearable/src/main/res/drawable/adaptive_logo_background.xml new file mode 100644 index 0000000..0b61b90 --- /dev/null +++ b/GalaxyWearable/src/main/res/drawable/adaptive_logo_background.xml @@ -0,0 +1,7 @@ + + + + diff --git a/GalaxyWearable/src/main/res/drawable/adaptive_logo_foreground.xml b/GalaxyWearable/src/main/res/drawable/adaptive_logo_foreground.xml new file mode 100644 index 0000000..966da43 --- /dev/null +++ b/GalaxyWearable/src/main/res/drawable/adaptive_logo_foreground.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/GalaxyWearable/src/main/res/mipmap-anydpi-v26/adaptive_logo.xml b/GalaxyWearable/src/main/res/mipmap-anydpi-v26/adaptive_logo.xml new file mode 100644 index 0000000..e0ba189 --- /dev/null +++ b/GalaxyWearable/src/main/res/mipmap-anydpi-v26/adaptive_logo.xml @@ -0,0 +1,6 @@ + + + + + +