diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml index 3759e6aca..435618b4e 100644 --- a/res/values/non_localizable_custom.xml +++ b/res/values/non_localizable_custom.xml @@ -96,6 +96,7 @@ false true false + false false diff --git a/src/android/org/linphone/contacts/ContactsManager.java b/src/android/org/linphone/contacts/ContactsManager.java index cb7996c4e..8ca11376d 100644 --- a/src/android/org/linphone/contacts/ContactsManager.java +++ b/src/android/org/linphone/contacts/ContactsManager.java @@ -56,6 +56,8 @@ import org.linphone.core.Friend; import org.linphone.core.FriendList; import org.linphone.core.FriendListListener; import org.linphone.core.MagicSearch; +import org.linphone.core.PresenceBasicStatus; +import org.linphone.core.PresenceModel; import org.linphone.core.ProxyConfig; import org.linphone.mediastream.Log; @@ -516,7 +518,19 @@ public class ContactsManager extends ContentObserver implements FriendListListen if (indexOf < 0) { contacts.add(contact); if (contact.hasAddress()) { - sipContacts.add(contact); + if (mActivity.getResources().getBoolean(R.bool.hide_sip_contacts_without_presence)) { + if (contact.getFriend() != null) { + for (LinphoneNumberOrAddress noa : contact.getNumbersOrAddresses()) { + PresenceModel pm = contact.getFriend().getPresenceModelForUriOrTel(noa.getValue()); + if (pm != null && pm.getBasicStatus().equals(PresenceBasicStatus.Open)) { + sipContacts.add(contact); + break; + } + } + } + } else { + sipContacts.add(contact); + } } } else { Log.w("Contact " + contact.getFullName() + " (" + contact.getAndroidId() +