From e076acb2511d4fc9b0d89c43a6eab99352dc9859 Mon Sep 17 00:00:00 2001 From: Margaux Clerc Date: Wed, 29 Apr 2015 11:05:55 +0200 Subject: [PATCH] Fix contacts --- src/org/linphone/Contact.java | 12 ++++++++---- src/org/linphone/DialerFragment.java | 2 +- src/org/linphone/EditContactFragment.java | 9 ++++++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/org/linphone/Contact.java b/src/org/linphone/Contact.java index bbb4ebf13..ac9b04c4b 100644 --- a/src/org/linphone/Contact.java +++ b/src/org/linphone/Contact.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.List; import org.linphone.compatibility.Compatibility; +import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneFriend; import android.content.ContentResolver; @@ -104,10 +105,13 @@ public class Contact implements Serializable { public void refresh(ContentResolver cr) { this.numbersOrAddresses = Compatibility.extractContactNumbersAndAddresses(id, cr); - for(LinphoneFriend friend : LinphoneManager.getLcIfManagerNotDestroyedOrNull().getFriendList()) { - if (friend.getRefKey().equals(id)) { - hasFriends = true; - this.numbersOrAddresses.add(friend.getAddress().asStringUriOnly()); + LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); + if(lc != null && lc.getFriendList() != null) { + for (LinphoneFriend friend :lc.getFriendList()){ + if (friend.getRefKey().equals(id)) { + hasFriends = true; + this.numbersOrAddresses.add(friend.getAddress().asStringUriOnly()); + } } } this.name = Compatibility.refreshContactName(cr, id); diff --git a/src/org/linphone/DialerFragment.java b/src/org/linphone/DialerFragment.java index 07ed122c8..61319cc6e 100644 --- a/src/org/linphone/DialerFragment.java +++ b/src/org/linphone/DialerFragment.java @@ -199,7 +199,7 @@ public class DialerFragment extends Fragment { mAddress.setText(intent.getData().getSchemeSpecificPart()); } else { Uri contactUri = intent.getData(); - String address = ContactsManager.getInstance().queryAddressOrNumber(getActivity().getContentResolver(),contactUri); + String address = ContactsManager.getInstance().queryAddressOrNumber(LinphoneService.instance().getContentResolver(),contactUri); if(address != null) { mAddress.setText(address); } else { diff --git a/src/org/linphone/EditContactFragment.java b/src/org/linphone/EditContactFragment.java index b63bd5cad..4200ac548 100644 --- a/src/org/linphone/EditContactFragment.java +++ b/src/org/linphone/EditContactFragment.java @@ -53,8 +53,11 @@ public class EditContactFragment extends Fragment { isNewContact = false; contactID = Integer.parseInt(contact.getID()); contact.refresh(getActivity().getContentResolver()); - } - if (getArguments().getString("NewSipAdress") != null) { + if (getArguments().getString("NewSipAdress") != null) { + newSipOrNumberToAdd = getArguments().getString("NewSipAdress"); + } + + } else if (getArguments().getString("NewSipAdress") != null) { newSipOrNumberToAdd = getArguments().getString("NewSipAdress"); isNewContact = true; } @@ -257,7 +260,7 @@ public class EditContactFragment extends Fragment { if (forceAddNumber) { tempNounoa = new NewOrUpdatedNumberOrAddress(isSip); } else { - if(isNewContact) { + if(isNewContact || newSipOrNumberToAdd != null) { tempNounoa = new NewOrUpdatedNumberOrAddress(isSip, numberOrAddress); } else { tempNounoa = new NewOrUpdatedNumberOrAddress(numberOrAddress, isSip);