diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java index f290547ab..5c41dcdd3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiWatchfaceService.java @@ -46,6 +46,7 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { private final Set allWatchfaces = new HashSet<>(); private final Set userWatchfaces = new HashSet<>(); + private UUID activeWatchface = null; public XiaomiWatchfaceService(final XiaomiSupport support) { super(support); @@ -89,6 +90,7 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { allWatchfaces.clear(); userWatchfaces.clear(); + activeWatchface = null; final List gbDeviceApps = new ArrayList<>(); @@ -98,6 +100,9 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { if (watchface.getCanDelete()) { userWatchfaces.add(uuid); } + if (watchface.getActive()) { + activeWatchface = uuid; + } GBDeviceApp gbDeviceApp = new GBDeviceApp( uuid, @@ -120,6 +125,8 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { return; } + activeWatchface = uuid; + LOG.debug("Set watchface to {}", uuid); getSupport().sendCommand( @@ -147,6 +154,11 @@ public class XiaomiWatchfaceService extends AbstractXiaomiService { return; } + if (uuid.equals(activeWatchface)) { + LOG.warn("Refusing to delete active watchface {}", uuid); + return; + } + LOG.debug("Delete watchface {}", uuid); allWatchfaces.remove(uuid);