diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java
index fb579d2f5..7959ec491 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/cmfwatchpro/CmfActivitySync.java
@@ -489,6 +489,7 @@ public class CmfActivitySync {
activitiesWithGps.clear();
+ GB.signalActivityDataFinish();
getDevice().unsetBusyTask();
GB.updateTransferNotification(null, "", false, 100, getContext());
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java
index faad7ffae..1e3748621 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/activity/XiaomiActivityFileFetcher.java
@@ -153,6 +153,7 @@ public class XiaomiActivityFileFetcher {
if (fileId == null) {
LOG.debug("Nothing more to fetch");
isFetching = false;
+ GB.signalActivityDataFinish();
mHealthService.getSupport().getDevice().unsetBusyTask();
GB.updateTransferNotification(null, "", false, 100, mHealthService.getSupport().getContext());
mHealthService.getSupport().getDevice().sendDeviceUpdateIntent(mHealthService.getSupport().getContext());
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java
index 802180277..41df59403 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/GB.java
@@ -64,6 +64,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
import nodomain.freeyourgadget.gadgetbridge.service.DeviceCommunicationService;
public class GB {
+ public static final String ACTION_ACTIVITY_SYNC = "nodomain.freeyourgadget.gadgetbridge.action.ACTIVITY_SYNC_FINISH";
public static final String NOTIFICATION_CHANNEL_ID = "gadgetbridge";
public static final String NOTIFICATION_CHANNEL_ID_CONNECTION_STATUS = "gadgetbridge connection status";
@@ -598,8 +599,17 @@ public class GB {
}
public static void signalActivityDataFinish() {
- Intent intent = new Intent(GBApplication.ACTION_NEW_DATA);
+ final Intent intent = new Intent(GBApplication.ACTION_NEW_DATA);
LocalBroadcastManager.getInstance(GBApplication.getContext()).sendBroadcast(intent);
+
+ if (!GBApplication.getPrefs().getBoolean("intent_api_broadcast_activity_sync", false)) {
+ return;
+ }
+
+ LOG.info("Broadcasting activity sync finish");
+
+ final Intent activitySyncFinishIntent = new Intent(ACTION_ACTIVITY_SYNC);
+ GBApplication.getContext().sendBroadcast(activitySyncFinishIntent);
}
public static boolean checkPermission(final Context context, final String permission) {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9b2ebeb01..a95cc5273 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2511,6 +2511,8 @@
Allow triggering database export via Intent API
Broadcast on database export
Broadcast an intent when database export finishes
+ Broadcast on activity sync finish
+ Broadcast an intent when activity sync finishes for any device
Allow Debug Commands
Allow triggering debug menu commands via Intent API
Shell Racing
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 3e1b6812b..8a675ca51 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -393,6 +393,13 @@
android:title="@string/intent_api_allow_activity_sync_title"
app:iconSpaceReserved="false" />
+
+