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() +