Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion GalaxyWearable/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
5 changes: 4 additions & 1 deletion GalaxyWearable/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">

<application android:label="GalaxyWearable Mod">
<application
android:label="GalaxyWearable Mod"
android:icon="@mipmap/adaptive_logo"
>
<meta-data
android:name="xposedmodule"
android:value="true"
Expand Down
3 changes: 3 additions & 0 deletions GalaxyWearable/src/main/assets/xposed_init
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
com.programminghoch10.GalaxyWearable.DisableForcedUpdateHook
com.programminghoch10.GalaxyWearable.DisableLocationPermissionHook
com.programminghoch10.GalaxyWearable.DisableManufacturerCheckHook
com.programminghoch10.GalaxyWearable.DisableNearbyWifiDevicesPermissionHook
com.programminghoch10.GalaxyWearable.DisableTelephonyPermissionHook
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
@@ -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<String> INITIAL_PERMISSION = (ArrayList<String>) XposedHelpers.getStaticObjectField(PermissionsUtilsClass, "INITIAL_PERMISSION");
INITIAL_PERMISSION.remove("android.permission.ACCESS_FINE_LOCATION");
}
}
Original file line number Diff line number Diff line change
@@ -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<String> INITIAL_PERMISSION = (ArrayList<String>) XposedHelpers.getStaticObjectField(PermissionsUtilsClass, "INITIAL_PERMISSION");
INITIAL_PERMISSION.remove("android.permission.NEARBY_WIFI_DEVICES");
}
}
Original file line number Diff line number Diff line change
@@ -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<String> INITIAL_PERMISSION = (ArrayList<String>) XposedHelpers.getStaticObjectField(PermissionsUtilsClass, "INITIAL_PERMISSION");
INITIAL_PERMISSION.remove("android.permission.READ_PHONE_STATE");
INITIAL_PERMISSION.remove("android.permission.READ_PHONE_NUMBERS");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#20aeff"
android:endColor="#115dff"
android:angle="-90" />
</shape>
14 changes: 14 additions & 0 deletions GalaxyWearable/src/main/res/drawable/adaptive_logo_foreground.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="247"
android:viewportHeight="142">
<group android:scaleX="0.45833334"
android:scaleY="0.26349527"
android:translateX="66.895836"
android:translateY="52.291836">
<path
android:pathData="M6.16,68.25V0H35.69C44.82,0 51.88,2.81 56.88,8.44C61.88,14.06 64.38,21.95 64.38,32.11V35.77C64.38,45.92 61.85,53.88 56.79,59.63C51.73,65.38 44.69,68.25 35.69,68.25H6.16ZM29.41,52.31H32.93C35.27,52.31 37.07,51.33 38.32,49.36C39.57,47.39 40.19,44.16 40.19,39.66V28.73C40.19,24.14 39.57,20.98 38.32,19.27C37.07,17.55 35.27,16.69 32.93,16.69H29.41V52.31ZM65.51,47.3V45.75C65.51,39.09 68.07,33.72 73.2,29.63C78.32,25.53 85.15,23.48 93.68,23.48C102.21,23.48 109.04,25.53 114.17,29.63C119.29,33.72 121.85,39.09 121.85,45.75V47.3C121.85,53.95 119.29,59.31 114.17,63.38C109.04,67.44 102.21,69.47 93.68,69.47C85.12,69.47 78.27,67.44 73.15,63.38C68.06,59.31 65.51,53.95 65.51,47.3ZM88.85,44.81V48.05C88.85,49.86 89.26,51.33 90.07,52.45C90.88,53.55 92.07,54.09 93.63,54.09C95.23,54.09 96.43,53.55 97.24,52.45C98.06,51.33 98.46,49.86 98.46,48.05V44.81C98.46,43.09 98.06,41.72 97.24,40.69C96.43,39.63 95.23,39.09 93.63,39.09C92.1,39.09 90.92,39.63 90.07,40.69C89.26,41.72 88.85,43.09 88.85,44.81ZM124.06,68.25V25.13H147.12L147.17,30.84H147.31C148.21,28.84 149.87,27.19 152.28,25.88C154.68,24.53 157.85,23.86 161.79,23.86C166.45,23.86 170.24,25.11 173.18,27.61C176.15,30.08 177.64,34.13 177.64,39.75V68.25H154.43V44.3C154.43,42.92 154.14,41.92 153.54,41.3C152.98,40.67 152.21,40.36 151.24,40.36C150.34,40.36 149.54,40.67 148.85,41.3C148.2,41.89 147.67,42.69 147.26,43.69V68.25H124.06ZM203.98,0V7.59C203.98,12.25 202.81,16.47 200.47,20.25C198.12,24 194.42,27.56 189.36,30.94L175.39,21.38C176.57,19.84 177.45,17.97 178.01,15.75C178.57,13.53 178.86,10.8 178.86,7.55V0H203.98ZM205.72,41.11V25.13H243.17V41.11H205.72ZM211.86,53.53V27.28L212.33,26.72V12.33H234.69V46.88C234.69,49.78 235,51.64 235.62,52.45C236.28,53.27 237.4,53.67 239,53.67C239.9,53.67 240.73,53.63 241.48,53.53C242.26,53.44 243.01,53.27 243.73,53.02V67.73C242.61,68.05 240.83,68.36 238.39,68.67C235.95,69.02 232.76,69.19 228.83,69.19C223.23,69.19 219,67.91 216.12,65.34C213.28,62.78 211.86,58.84 211.86,53.53ZM16.55,140.3L0,72H23.02L31.03,106.83C31.13,107.2 31.2,107.64 31.27,108.14C31.36,108.61 31.44,109.14 31.5,109.73H31.73C31.8,109.14 31.88,108.61 31.97,108.14C32.09,107.64 32.19,107.2 32.25,106.83L40.36,72H60.61L69.47,106.83C69.56,107.2 69.64,107.63 69.7,108.09C69.8,108.53 69.91,109.08 70.03,109.73H70.22C70.31,109.08 70.39,108.53 70.45,108.09C70.55,107.63 70.63,107.2 70.69,106.83L78,72H99.42L82.97,140.3H59.77L50.77,106.27C50.67,105.95 50.56,105.55 50.44,105.05C50.34,104.52 50.27,103.97 50.2,103.41H49.97C49.91,103.97 49.81,104.5 49.69,105C49.59,105.5 49.52,105.92 49.45,106.27L40.41,140.3H16.55ZM93.8,119.2V117.7C93.8,110.86 96.3,105.47 101.3,101.53C106.33,97.56 113.14,95.58 121.74,95.58C130.02,95.58 136.42,97.55 140.96,101.48C145.49,105.39 147.75,110.66 147.75,117.28V120.75H105.94V115.41H125.53V114.94C125.53,113.63 125.21,112.58 124.55,111.8C123.89,111.02 122.86,110.63 121.46,110.63C119.96,110.63 118.81,111.14 118.03,112.17C117.28,113.2 116.91,114.69 116.91,116.63V119.39C116.91,121.8 117.35,123.55 118.22,124.64C119.1,125.73 120.35,126.28 121.97,126.28C123.41,126.28 124.55,125.98 125.39,125.39C126.24,124.8 126.88,123.98 127.31,122.95L147.52,126.28C145.92,131.41 143.14,135.22 139.17,137.72C135.21,140.22 129.52,141.47 122.11,141.47C113.14,141.47 106.17,139.52 101.21,135.61C96.27,131.67 93.8,126.2 93.8,119.2ZM148.32,127.73C148.32,123.33 150.11,119.81 153.71,117.19C157.3,114.56 162.11,113.25 168.14,113.25H179.58V111.61C179.58,110.33 179.32,109.34 178.79,108.66C178.29,107.94 177.43,107.58 176.21,107.58C175.05,107.58 174.16,107.89 173.54,108.52C172.91,109.11 172.6,109.94 172.6,111V111.89L151.74,111.8V111C151.74,106.25 154.08,102.55 158.77,99.89C163.49,97.2 169.94,95.86 178.13,95.86C186.66,95.86 192.91,97.22 196.88,99.94C200.85,102.63 202.83,106.88 202.83,112.69V131.16C202.83,132.81 202.99,134.38 203.3,135.84C203.61,137.28 204.11,138.55 204.8,139.64V140.25H181.69C181.16,139.5 180.77,138.67 180.52,137.77C180.3,136.86 180.14,135.89 180.05,134.86C178.96,136.36 177.04,137.73 174.29,138.98C171.57,140.23 168.16,140.86 164.07,140.86C159.1,140.86 155.22,139.77 152.44,137.58C149.69,135.36 148.32,132.08 148.32,127.73ZM171.19,125.91C171.19,127.09 171.49,127.98 172.08,128.58C172.71,129.17 173.6,129.47 174.75,129.47C175.97,129.47 177.08,128.97 178.08,127.97C179.08,126.97 179.58,125.84 179.58,124.59V122.11H176.16C174.47,122.11 173.22,122.42 172.41,123.05C171.6,123.67 171.19,124.63 171.19,125.91ZM206.58,140.25V97.13H229.93V103.08H229.97C231.19,101.08 232.83,99.48 234.9,98.3C236.96,97.08 239.15,96.47 241.46,96.47C242.68,96.47 243.72,96.53 244.6,96.66C245.51,96.78 246.12,96.91 246.43,97.03V113.3C245.83,112.98 245.07,112.77 244.13,112.64C243.22,112.52 242.19,112.45 241.04,112.45C239.16,112.45 237.16,113.05 235.04,114.23C232.94,115.39 231.32,116.97 230.16,118.97V140.25H206.58Z"
android:fillColor="#ffffff"/>
</group>
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/adaptive_logo_background"/>
<foreground android:drawable="@drawable/adaptive_logo_foreground"/>
<monochrome android:drawable="@drawable/adaptive_logo_foreground"/>
</adaptive-icon>