From 5d15df07514f3d999e3bfe124a9654bba9257064 Mon Sep 17 00:00:00 2001 From: Davis Mosenkovs Date: Sun, 8 Oct 2023 21:40:17 +0300 Subject: [PATCH] CallSpec: Add source app for VoIP app calls --- .../gadgetbridge/externalevents/NotificationListener.java | 6 +++++- .../freeyourgadget/gadgetbridge/impl/GBDeviceService.java | 3 +++ .../freeyourgadget/gadgetbridge/model/CallSpec.java | 8 ++++++++ .../freeyourgadget/gadgetbridge/model/DeviceService.java | 2 ++ .../gadgetbridge/service/DeviceCommunicationService.java | 4 ++++ 5 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java index 5f294855f..32651e829 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/externalevents/NotificationListener.java @@ -551,17 +551,21 @@ public class NotificationListener extends NotificationListenerService { // figure out sender String number; + String appName = getAppName(app); if (noti.extras.containsKey(Notification.EXTRA_PEOPLE)) { number = noti.extras.getString(Notification.EXTRA_PEOPLE); } else if (noti.extras.containsKey(Notification.EXTRA_TITLE)) { number = noti.extras.getString(Notification.EXTRA_TITLE); } else { - String appName = getAppName(app); number = appName != null ? appName : app; } activeCallPostTime = sbn.getPostTime(); CallSpec callSpec = new CallSpec(); callSpec.number = number; + callSpec.sourceAppId = app; + if (appName != null) { + callSpec.sourceName = appName; + } callSpec.command = callStarted ? CallSpec.CALL_START : CallSpec.CALL_INCOMING; mLastCallCommand = callSpec.command; GBApplication.deviceService().onSetCallState(callSpec); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java index 80c6db28d..dfb3e18a9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceService.java @@ -67,6 +67,7 @@ public class GBDeviceService implements DeviceService { EXTRA_NOTIFICATION_BODY, EXTRA_NOTIFICATION_SOURCENAME, EXTRA_CALL_DISPLAYNAME, + EXTRA_CALL_SOURCENAME, EXTRA_MUSIC_ARTIST, EXTRA_MUSIC_ALBUM, EXTRA_MUSIC_TRACK, @@ -227,6 +228,8 @@ public class GBDeviceService implements DeviceService { Intent intent = createIntent().setAction(ACTION_CALLSTATE) .putExtra(EXTRA_CALL_PHONENUMBER, callSpec.number) .putExtra(EXTRA_CALL_DISPLAYNAME, callSpec.name) + .putExtra(EXTRA_CALL_SOURCENAME, callSpec.sourceName) + .putExtra(EXTRA_CALL_SOURCEAPPID, callSpec.sourceAppId) .putExtra(EXTRA_CALL_COMMAND, callSpec.command) .putExtra(EXTRA_CALL_DNDSUPPRESSED, callSpec.dndSuppressed); invokeService(intent); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/CallSpec.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/CallSpec.java index 97a4efd94..ac1a09cb4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/CallSpec.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/CallSpec.java @@ -27,6 +27,14 @@ public class CallSpec { public String number; public String name; + + public String sourceName; + + /** + * The application that generated the notification. + */ + public String sourceAppId; + public int command; public int dndSuppressed; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java index e9a15373f..6198425e5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceService.java @@ -97,6 +97,8 @@ public interface DeviceService extends EventHandler { String EXTRA_CALL_COMMAND = "call_command"; String EXTRA_CALL_PHONENUMBER = "call_phonenumber"; String EXTRA_CALL_DISPLAYNAME = "call_displayname"; + String EXTRA_CALL_SOURCENAME = "call_sourcename"; + String EXTRA_CALL_SOURCEAPPID = "call_sourceappid"; String EXTRA_CALL_DNDSUPPRESSED = "call_dndsuppressed"; String EXTRA_CANNEDMESSAGES = "cannedmessages"; String EXTRA_CANNEDMESSAGES_TYPE = "cannedmessages_type"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java index e7d8c564c..e92b1f70f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/DeviceCommunicationService.java @@ -162,6 +162,8 @@ import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CAL import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALENDAREVENT_COLOR; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_COMMAND; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_DISPLAYNAME; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_SOURCENAME; +import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_SOURCEAPPID; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_DNDSUPPRESSED; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CALL_PHONENUMBER; import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.EXTRA_CANNEDMESSAGES; @@ -855,6 +857,8 @@ public class DeviceCommunicationService extends Service implements SharedPrefere callSpec.command = intent.getIntExtra(EXTRA_CALL_COMMAND, CallSpec.CALL_UNDEFINED); callSpec.number = intent.getStringExtra(EXTRA_CALL_PHONENUMBER); callSpec.name = intent.getStringExtra(EXTRA_CALL_DISPLAYNAME); + callSpec.sourceName = intent.getStringExtra(EXTRA_CALL_SOURCENAME); + callSpec.sourceAppId = intent.getStringExtra(EXTRA_CALL_SOURCEAPPID); callSpec.dndSuppressed = intent.getIntExtra(EXTRA_CALL_DNDSUPPRESSED, 0); deviceSupport.onSetCallState(callSpec); break;