From 3ab5835059be46762d1dbbfc73362ae4472c1de7 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 13 Oct 2016 12:11:56 +0200 Subject: [PATCH] Improved isInLinphoneFriendList method in LinphoneContact --- src/org/linphone/ContactsManager.java | 26 ++++++++++++++++++++++++++ src/org/linphone/LinphoneContact.java | 12 ++++++++++-- src/org/linphone/LinphoneManager.java | 1 + 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/org/linphone/ContactsManager.java b/src/org/linphone/ContactsManager.java index 9ac69ca72..58dfcf87b 100644 --- a/src/org/linphone/ContactsManager.java +++ b/src/org/linphone/ContactsManager.java @@ -213,6 +213,32 @@ public class ContactsManager extends ContentObserver { return null; } + public LinphoneContact findContactFromPhoneNumber(String phoneNumber) { + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + LinphoneProxyConfig lpc = null; + if (lc != null) { + lpc = lc.getDefaultProxyConfig(); + } + + for (LinphoneContact c: getContacts()) { + for (LinphoneNumberOrAddress noa: c.getNumbersOrAddresses()) { + if (noa.isSIPAddress()) { + continue; + } + + String normalized = null; + if (lpc != null) { + normalized = lpc.normalizePhoneNumber(noa.getValue()); + } + + if (noa.getValue().equals(phoneNumber) || (normalized != null && normalized.equals(phoneNumber))) { + return c; + } + } + } + return null; + } + public synchronized void setContacts(List c) { contacts = c; sipContacts = new ArrayList(); diff --git a/src/org/linphone/LinphoneContact.java b/src/org/linphone/LinphoneContact.java index d909c952d..31c5284d3 100644 --- a/src/org/linphone/LinphoneContact.java +++ b/src/org/linphone/LinphoneContact.java @@ -33,6 +33,7 @@ import org.linphone.core.LinphoneCoreFactory; import org.linphone.core.LinphoneFriend; import org.linphone.core.LinphoneFriend.SubscribePolicy; import org.linphone.core.PresenceBasicStatus; +import org.linphone.core.PresenceModel; import org.linphone.mediastream.Log; import android.content.ContentProviderOperation; @@ -632,11 +633,18 @@ public class LinphoneContact implements Serializable, Comparable