diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java index 388b3cfc46..175272ed9f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java @@ -573,6 +573,7 @@ public abstract class HuaweiCoordinator extends AbstractDeviceCoordinator { // Developer final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); + developer.add(R.xml.devicesettings_force_encryption); developer.add(R.xml.devicesettings_huawei_debug); if (deviceState.supportsGpsAndTimeToDevice()) developer.add(R.xml.devicesettings_huawei_gps_and_time); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiSupportProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiSupportProvider.java index d66ab822f6..bcc3d201b5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiSupportProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiSupportProvider.java @@ -236,6 +236,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils; import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.MediaManager; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; +import nodomain.freeyourgadget.gadgetbridge.util.preferences.DevicePrefs; public class HuaweiSupportProvider { private static final Logger LOG = LoggerFactory.getLogger(HuaweiSupportProvider.class); @@ -381,7 +382,13 @@ public class HuaweiSupportProvider { this.context = context; this.huaweiType = getCoordinator().getHuaweiType(); this.paramsProvider.setAW(getCoordinator().getHuaweiType() == HuaweiDeviceType.AW); - this.paramsProvider.setTransactionsCrypted(getCoordinator().isTransactionCrypted()); + final DevicePrefs devicePrefs = GBApplication.getDevicePrefs(device); + final boolean transactionCrypted = switch (devicePrefs.getString("force_encryption", "default")) { + case "force_enabled" -> true; + case "force_disabled" -> false; + default -> getCoordinator().isTransactionCrypted(); + }; + this.paramsProvider.setTransactionsCrypted(transactionCrypted); mediaManager = new MediaManager(context); } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 9a684e5afa..0a86743c03 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -5351,6 +5351,17 @@ @string/pref_force_connection_type_bt_classic_value + + @string/pref_default + @string/preference_force_enabled + @string/preference_force_disabled + + + default + force_enabled + force_disabled + + @string/pref_dashboard_widget_today_title @string/pref_dashboard_widget_goals_chart_title diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d69d87b0b6..ee42865c16 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4055,6 +4055,10 @@ Automatic Bluetooth LE Bluetooth Classic + Encryption + Do not change unless instructed, or if you are developer + Force enabled + Force disabled BOTH BLE BT_CLASSIC diff --git a/app/src/main/res/xml/devicesettings_force_encryption.xml b/app/src/main/res/xml/devicesettings_force_encryption.xml new file mode 100644 index 0000000000..30a7342f1f --- /dev/null +++ b/app/src/main/res/xml/devicesettings_force_encryption.xml @@ -0,0 +1,12 @@ + + + +