From 8d65fab06c98fef2db356df4e7a441f655080ea9 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 17 Mar 2016 16:17:35 +0100 Subject: [PATCH] Fixed contact lookup for history & chat --- src/org/linphone/CallActivity.java | 4 ++-- src/org/linphone/CallIncomingActivity.java | 2 +- src/org/linphone/CallOutgoingActivity.java | 2 +- src/org/linphone/ChatFragment.java | 2 +- src/org/linphone/ChatListFragment.java | 2 +- src/org/linphone/ContactsManager.java | 12 +++--------- src/org/linphone/HistoryDetailFragment.java | 2 +- src/org/linphone/HistoryListFragment.java | 2 +- src/org/linphone/LinphoneActivity.java | 4 ++-- src/org/linphone/LinphoneManager.java | 2 +- src/org/linphone/LinphoneService.java | 4 ++-- 11 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/org/linphone/CallActivity.java b/src/org/linphone/CallActivity.java index 7922449bf..4c830acb8 100644 --- a/src/org/linphone/CallActivity.java +++ b/src/org/linphone/CallActivity.java @@ -1557,7 +1557,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve } private void setContactInformation(TextView contactName, ImageView contactPicture, LinphoneAddress lAddress) { - LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(contactName.getContext().getContentResolver(), lAddress); + LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(lAddress); if (lContact == null) { contactName.setText(LinphoneUtils.getAddressDisplayName(lAddress)); contactPicture.setImageResource(R.drawable.avatar); @@ -1720,7 +1720,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve conferenceList.setId(index + 1); TextView contact = (TextView) confView.findViewById(R.id.contactNameOrNumber); - LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(getContentResolver(),call.getRemoteAddress()); + LinphoneContact lContact = ContactsManager.getInstance().findContactFromAddress(call.getRemoteAddress()); if (lContact == null) { contact.setText(call.getRemoteAddress().getUserName()); } else { diff --git a/src/org/linphone/CallIncomingActivity.java b/src/org/linphone/CallIncomingActivity.java index adbaaebf2..0691125d6 100644 --- a/src/org/linphone/CallIncomingActivity.java +++ b/src/org/linphone/CallIncomingActivity.java @@ -232,7 +232,7 @@ public class CallIncomingActivity extends Activity implements LinphoneSliderTrig return; } LinphoneAddress address = mCall.getRemoteAddress(); - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(getContentResolver(), address); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); if (contact != null) { LinphoneUtils.setImagePictureFromUri(this, contactPicture, contact.getPhotoUri(), contact.getThumbnailUri()); name.setText(contact.getFullName()); diff --git a/src/org/linphone/CallOutgoingActivity.java b/src/org/linphone/CallOutgoingActivity.java index 093d545dd..62a107206 100644 --- a/src/org/linphone/CallOutgoingActivity.java +++ b/src/org/linphone/CallOutgoingActivity.java @@ -143,7 +143,7 @@ public class CallOutgoingActivity extends Activity implements OnClickListener{ } LinphoneAddress address = mCall.getRemoteAddress(); - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(getContentResolver(), address); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); if (contact != null) { LinphoneUtils.setImagePictureFromUri(this, contactPicture, contact.getPhotoUri(), contact.getThumbnailUri()); name.setText(contact.getFullName()); diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index 0e116f5ba..019f846d3 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -459,7 +459,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC chatRoom = lc.getChatRoom(lAddress); chatRoom.markAsRead(); LinphoneActivity.instance().updateMissedChatCount(); - contact = ContactsManager.getInstance().findContactFromAddress(getActivity().getContentResolver(), lAddress); + contact = ContactsManager.getInstance().findContactFromAddress(lAddress); if (chatRoom != null) { displayChatHeader(lAddress); dispayMessageList(); diff --git a/src/org/linphone/ChatListFragment.java b/src/org/linphone/ChatListFragment.java index ea9dcb7cc..584f60bf7 100644 --- a/src/org/linphone/ChatListFragment.java +++ b/src/org/linphone/ChatListFragment.java @@ -348,7 +348,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte return view; } - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(getActivity().getContentResolver(), address); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); String message = ""; Long time; diff --git a/src/org/linphone/ContactsManager.java b/src/org/linphone/ContactsManager.java index e3ff7dd3d..c635d68c6 100644 --- a/src/org/linphone/ContactsManager.java +++ b/src/org/linphone/ContactsManager.java @@ -109,18 +109,12 @@ public class ContactsManager { } public LinphoneContact findContactFromAddress(LinphoneAddress address) { - return findContactFromAddress(null, address); - } - - public LinphoneContact findContactFromAddress(ContentResolver contentResolver, LinphoneAddress address) { String sipUri = address.asStringUriOnly(); - if (sipUri.startsWith("sip:")) { - sipUri = sipUri.substring(4); - } - + String username = address.getUserName(); + for (LinphoneContact c: getContacts()) { for (LinphoneNumberOrAddress noa: c.getNumbersOrAddresses()) { - if (noa.getValue().equals(sipUri)) { + if ((noa.isSIPAddress() && (noa.getValue().equals(sipUri) || noa.getValue().equals(sipUri.substring(4)))) || (!noa.isSIPAddress() && noa.getValue().equals(username))) { return c; } } diff --git a/src/org/linphone/HistoryDetailFragment.java b/src/org/linphone/HistoryDetailFragment.java index 7d0f181a2..d7c598666 100644 --- a/src/org/linphone/HistoryDetailFragment.java +++ b/src/org/linphone/HistoryDetailFragment.java @@ -108,7 +108,7 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { if(lAddress != null) { contactAddress.setText(lAddress.asStringUriOnly()); - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(getActivity().getContentResolver(), lAddress); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(lAddress); if (contact != null) { contactName.setText(contact.getFullName()); LinphoneUtils.setImagePictureFromUri(view.getContext(),contactPicture,contact.getPhotoUri(),contact.getThumbnailUri()); diff --git a/src/org/linphone/HistoryListFragment.java b/src/org/linphone/HistoryListFragment.java index 6ebdd7328..98aff2296 100644 --- a/src/org/linphone/HistoryListFragment.java +++ b/src/org/linphone/HistoryListFragment.java @@ -440,7 +440,7 @@ public class HistoryListFragment extends Fragment implements OnClickListener, On holder.callDirection.setImageResource(R.drawable.call_status_outgoing); } - LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(getActivity().getContentResolver(), address); + LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(address); String displayName = null; final String sipUri = address.asString(); if(c != null){ diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 3bae4279e..a5540d3fe 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -545,7 +545,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta //TODO display error message return; } - LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(getContentResolver(), lAddress); + LinphoneContact c = ContactsManager.getInstance().findContactFromAddress(lAddress); String displayName = c != null ? c.getFullName() : LinphoneUtils.getAddressDisplayName(sipUri); String pictureUri = c != null && c.getPhotoUri() != null ? c.getPhotoUri().toString() : null; @@ -670,7 +670,7 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta Log.e("Cannot display chat", e); return; } - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(getContentResolver(), lAddress); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(lAddress); displayName = contact != null ? contact.getFullName() : null; if (contact != null && contact.getPhotoUri() != null) { diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index baa850fd2..006b27168 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -864,7 +864,7 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag } try { - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(mServiceContext.getContentResolver(), from); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(from); if (!mServiceContext.getResources().getBoolean(R.bool.disable_chat_message_notification)) { if (LinphoneActivity.isInstanciated() && !LinphoneActivity.instance().displayChatMessageNotification(from.asStringUriOnly())) { return; diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index 2d8762bd3..cf5919908 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -315,7 +315,7 @@ public final class LinphoneService extends Service { LinphoneAddress address = LinphoneCoreFactory.instance().createLinphoneAddress(userName,domain,null); address.setDisplayName(displayName); - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(getContentResolver(), address); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(address); Uri pictureUri = contact != null ? contact.getPhotoUri() : null; Bitmap bm = null; try { @@ -393,7 +393,7 @@ public final class LinphoneService extends Service { Uri pictureUri = null; try { - LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(getContentResolver(), LinphoneCoreFactory.instance().createLinphoneAddress(fromSipUri)); + LinphoneContact contact = ContactsManager.getInstance().findContactFromAddress(LinphoneCoreFactory.instance().createLinphoneAddress(fromSipUri)); if (contact != null) pictureUri = contact.getThumbnailUri(); } catch (LinphoneCoreException e1) {