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