From 9678a73763ef9c438b57809f108bee02e62e9640 Mon Sep 17 00:00:00 2001 From: programminghoch10 <16062290+programminghoch10@users.noreply.github.com> Date: Tue, 27 Jan 2026 10:43:15 +0100 Subject: [PATCH 1/5] GalaxyWearable: limit DisableForcedUpdateHook to main package only --- .../GalaxyWearable/DisableForcedUpdateHook.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableForcedUpdateHook.java b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableForcedUpdateHook.java index 3cee76f..792a90f 100644 --- a/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableForcedUpdateHook.java +++ b/GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableForcedUpdateHook.java @@ -9,7 +9,8 @@ public class DisableForcedUpdateHook implements IXposedHookLoadPackage { @Override - public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { + public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) { + if (!lpparam.packageName.equals("com.samsung.android.app.watchmanager")) return; final Class UpdateManagerClass = XposedHelpers.findClass("com.samsung.android.app.twatchmanager.update.UpdateManager", lpparam.classLoader); XposedHelpers.findAndHookMethod( From e073308bdb6046304bb167c6a0d55723d5805e44 Mon Sep 17 00:00:00 2001 From: programminghoch10 <16062290+programminghoch10@users.noreply.github.com> Date: Tue, 27 Jan 2026 11:43:06 +0100 Subject: [PATCH 2/5] GalaxyWearable: add icon --- GalaxyWearable/src/main/AndroidManifest.xml | 5 ++++- .../main/res/drawable/adaptive_logo_background.xml | 7 +++++++ .../main/res/drawable/adaptive_logo_foreground.xml | 14 ++++++++++++++ .../main/res/mipmap-anydpi-v26/adaptive_logo.xml | 6 ++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 GalaxyWearable/src/main/res/drawable/adaptive_logo_background.xml create mode 100644 GalaxyWearable/src/main/res/drawable/adaptive_logo_foreground.xml create mode 100644 GalaxyWearable/src/main/res/mipmap-anydpi-v26/adaptive_logo.xml 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 @@ - + + + + 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 @@ + + + + + + From ee563645bb8afbacd207aac5941fbb20f894ad08 Mon Sep 17 00:00:00 2001 From: programminghoch10 <16062290+programminghoch10@users.noreply.github.com> Date: Tue, 17 Feb 2026 20:45:40 +0100 Subject: [PATCH 3/5] GalaxyWearable: Disable required telephony permission --- GalaxyWearable/README.md | 4 ++- GalaxyWearable/src/main/assets/xposed_init | 1 + .../DisableTelephonyPermissionHook.java | 28 +++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableTelephonyPermissionHook.java diff --git a/GalaxyWearable/README.md b/GalaxyWearable/README.md index 834e0d5..cd3149c 100644 --- a/GalaxyWearable/README.md +++ b/GalaxyWearable/README.md @@ -4,4 +4,6 @@ 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 diff --git a/GalaxyWearable/src/main/assets/xposed_init b/GalaxyWearable/src/main/assets/xposed_init index 935cff0..bf92d5f 100644 --- a/GalaxyWearable/src/main/assets/xposed_init +++ b/GalaxyWearable/src/main/assets/xposed_init @@ -1,2 +1,3 @@ com.programminghoch10.GalaxyWearable.DisableForcedUpdateHook com.programminghoch10.GalaxyWearable.DisableManufacturerCheckHook +com.programminghoch10.GalaxyWearable.DisableTelephonyPermissionHook 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"); + } +} From 67d21169ca481c9c13d9b76e6e5658142cefd047 Mon Sep 17 00:00:00 2001 From: programminghoch10 <16062290+programminghoch10@users.noreply.github.com> Date: Tue, 17 Feb 2026 20:53:43 +0100 Subject: [PATCH 4/5] GalaxyWearable: disable nearby wifi devices permission --- GalaxyWearable/README.md | 1 + GalaxyWearable/src/main/assets/xposed_init | 1 + ...isableNearbyWifiDevicesPermissionHook.java | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableNearbyWifiDevicesPermissionHook.java diff --git a/GalaxyWearable/README.md b/GalaxyWearable/README.md index cd3149c..1e39e52 100644 --- a/GalaxyWearable/README.md +++ b/GalaxyWearable/README.md @@ -7,3 +7,4 @@ This is an Xposed variant of [`Linux4/GalaxyWearable`](https://github.com/Linux4 Additional features: * Disable the forced app update prompt when opening the app * Disable the required phone permission +* Disable nearby WiFi devices permission diff --git a/GalaxyWearable/src/main/assets/xposed_init b/GalaxyWearable/src/main/assets/xposed_init index bf92d5f..2a193c2 100644 --- a/GalaxyWearable/src/main/assets/xposed_init +++ b/GalaxyWearable/src/main/assets/xposed_init @@ -1,3 +1,4 @@ com.programminghoch10.GalaxyWearable.DisableForcedUpdateHook com.programminghoch10.GalaxyWearable.DisableManufacturerCheckHook +com.programminghoch10.GalaxyWearable.DisableNearbyWifiDevicesPermissionHook com.programminghoch10.GalaxyWearable.DisableTelephonyPermissionHook 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"); + } +} From 9c380fb76d30cb84a5db7ce2424a48eee953c083 Mon Sep 17 00:00:00 2001 From: programminghoch10 <16062290+programminghoch10@users.noreply.github.com> Date: Tue, 17 Feb 2026 20:57:41 +0100 Subject: [PATCH 5/5] GalaxyWearable: disable fine location permission --- GalaxyWearable/README.md | 1 + GalaxyWearable/src/main/assets/xposed_init | 1 + .../DisableLocationPermissionHook.java | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 GalaxyWearable/src/main/java/com/programminghoch10/GalaxyWearable/DisableLocationPermissionHook.java diff --git a/GalaxyWearable/README.md b/GalaxyWearable/README.md index 1e39e52..f9c8cb7 100644 --- a/GalaxyWearable/README.md +++ b/GalaxyWearable/README.md @@ -8,3 +8,4 @@ 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/assets/xposed_init b/GalaxyWearable/src/main/assets/xposed_init index 2a193c2..94ef3a5 100644 --- a/GalaxyWearable/src/main/assets/xposed_init +++ b/GalaxyWearable/src/main/assets/xposed_init @@ -1,4 +1,5 @@ com.programminghoch10.GalaxyWearable.DisableForcedUpdateHook +com.programminghoch10.GalaxyWearable.DisableLocationPermissionHook com.programminghoch10.GalaxyWearable.DisableManufacturerCheckHook com.programminghoch10.GalaxyWearable.DisableNearbyWifiDevicesPermissionHook com.programminghoch10.GalaxyWearable.DisableTelephonyPermissionHook 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"); + } +}