@@ -43,6 +43,7 @@ import eu.siacs.conversations.xmpp.jingle.RtpEndUserState;
 import eu.siacs.conversations.xmpp.jingle.stanzas.Reason;
 
 import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Set;
@@ -390,18 +391,20 @@ public class CallIntegrationConnectionService extends ConnectionService {
         }
     }
 
-    private static PhoneAccountHandle findPhoneAccount(final Context context, final AbstractJingleConnection.Id id) {
+    private static ArrayList<PhoneAccountHandle> findPhoneAccount(final Context context, final AbstractJingleConnection.Id id) {
         final var def = CallIntegrationConnectionService.getHandle(context, id.account);
-        if (Build.VERSION.SDK_INT < 23) return def;
+        final var lst = new ArrayList<PhoneAccountHandle>();
+        lst.add(def);
+        if (Build.VERSION.SDK_INT < 23) return lst;
 
         final var prefs = PreferenceManager.getDefaultSharedPreferences(context);
-        if (!prefs.getBoolean("dialler_integration_incoming", true)) return def;
+        if (!prefs.getBoolean("dialler_integration_incoming", true)) return lst;
 
         if (context.checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
             // We cannot request audio permission in Dialer UI
             // when Dialer is shown over keyguard, the user cannot even necessarily
             // see notifications.
-            return def;
+            return lst;
         }
 
         /* Are video calls really coming in from a PSTN gateway?
@@ -421,10 +424,10 @@ public class CallIntegrationConnectionService extends ConnectionService {
             }
 
             final var handle = contact.phoneAccountHandle();
-            if (handle != null) return handle;
+            if (handle != null) lst.add(0, handle);
         }
 
-        return def;
+        return lst;
     }
 
     public static boolean addNewIncomingCall(
@@ -440,7 +443,7 @@ public class CallIntegrationConnectionService extends ConnectionService {
                             + ")");
             return true;
         }
-        final var phoneAccountHandle = findPhoneAccount(context, id);
+        final var phoneAccountHandles = findPhoneAccount(context, id);
         final var bundle = new Bundle();
         bundle.putString(
                 TelecomManager.EXTRA_INCOMING_CALL_ADDRESS,
@@ -450,17 +453,19 @@ public class CallIntegrationConnectionService extends ConnectionService {
         extras.putString("account", id.account.getJid().toString());
         extras.putString("with", id.with.toString());
         bundle.putBundle(TelecomManager.EXTRA_INCOMING_CALL_EXTRAS, extras);
-        try {
-            context.getSystemService(TelecomManager.class)
-                    .addNewIncomingCall(phoneAccountHandle, bundle);
-        } catch (final SecurityException e) {
-            Log.e(
-                    Config.LOGTAG,
-                    id.account.getJid().asBareJid() + ": call integration not available",
-                    e);
-            return false;
+        for (final var phoneAccountHandle : phoneAccountHandles) {
+            try {
+                context.getSystemService(TelecomManager.class)
+                        .addNewIncomingCall(phoneAccountHandle, bundle);
+                return true;
+            } catch (final SecurityException e) {
+                Log.e(
+                        Config.LOGTAG,
+                        id.account.getJid().asBareJid() + ": call integration not available",
+                        e);
+            }
         }
-        return true;
+        return false;
     }
 
     public static class ServiceConnectionService {