diff --git a/src/org/linphone/ChatListFragment.java b/src/org/linphone/ChatListFragment.java index 9b9dc6116..fa1a461ce 100644 --- a/src/org/linphone/ChatListFragment.java +++ b/src/org/linphone/ChatListFragment.java @@ -356,7 +356,7 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte Log.e("Chat view cannot parse address",e); return view; } - Contact lContact = ContactsManager.getInstance().findContactWithAddress(address); + Contact lContact = ContactsManager.getInstance().findContactWithAddress(getActivity().getContentResolver(), address); String message = ""; if (useNativeAPI) { diff --git a/src/org/linphone/ContactsManager.java b/src/org/linphone/ContactsManager.java index 61013fb80..95fc5beea 100644 --- a/src/org/linphone/ContactsManager.java +++ b/src/org/linphone/ContactsManager.java @@ -150,6 +150,7 @@ public class ContactsManager { LinphoneFriend friend = LinphoneCoreFactory.instance().createLinphoneFriend(sipUri); if (friend != null) { friend.edit(); + friend.enableSubscribes(false); friend.setRefKey(contact.getID()); friend.done(); try { @@ -230,7 +231,7 @@ public class ContactsManager { return null; } - public Contact getContact(String id){ + public Contact getContact(String id, ContentResolver contentResolver){ String[] projection = {ContactsContract.Data.CONTACT_ID, ContactsContract.Data.DISPLAY_NAME}; String selection = new StringBuilder() .append(ContactsContract.Data.CONTACT_ID) @@ -296,7 +297,7 @@ public class ContactsManager { } } - private Contact checkPhoneQueryResult(Cursor c, String columnPhone, String columnId, String username) { + private Contact checkPhoneQueryResult(ContentResolver contentResolver, Cursor c, String columnPhone, String columnId, String username) { boolean contactFound = false; if (c != null) { @@ -320,7 +321,7 @@ public class ContactsManager { } if(contactFound){ - Contact contact = getContact(c.getString(c.getColumnIndex(columnId))); + Contact contact = getContact(c.getString(c.getColumnIndex(columnId)), contentResolver); c.close(); return contact; } @@ -330,7 +331,7 @@ public class ContactsManager { return null; } - public Contact findContactWithAddress(LinphoneAddress address){ + public Contact findContactWithAddress(ContentResolver contentResolver, LinphoneAddress address){ String sipUri = address.asStringUriOnly(); if (sipUri.startsWith("sip:")) sipUri = sipUri.substring(4); @@ -338,7 +339,7 @@ public class ContactsManager { if(LinphoneManager.getLc().getFriendList() != null && LinphoneManager.getLc().getFriendList().length > 0) { for (LinphoneFriend friend : LinphoneManager.getLc().getFriendList()) { if (friend.getAddress().equals(address)) { - return getContact(friend.getRefKey()); + return getContact(friend.getRefKey(), contentResolver); } } } @@ -368,7 +369,7 @@ public class ContactsManager { Uri lookupUri = Uri.withAppendedPath(android.provider.ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(address.getUserName())); projection = new String[] {ContactsContract.PhoneLookup._ID,ContactsContract.PhoneLookup.NUMBER,ContactsContract.PhoneLookup.DISPLAY_NAME }; Cursor c = contentResolver.query(lookupUri, projection, null, null, null); - contact = checkPhoneQueryResult(c, ContactsContract.PhoneLookup.NUMBER, ContactsContract.PhoneLookup._ID, address.getUserName()); + contact = checkPhoneQueryResult(contentResolver, c, ContactsContract.PhoneLookup.NUMBER, ContactsContract.PhoneLookup._ID, address.getUserName()); if (contact != null) { return contact; diff --git a/src/org/linphone/HistoryDetailFragment.java b/src/org/linphone/HistoryDetailFragment.java index 7d0eae6d8..dd1e62311 100644 --- a/src/org/linphone/HistoryDetailFragment.java +++ b/src/org/linphone/HistoryDetailFragment.java @@ -112,7 +112,7 @@ public class HistoryDetailFragment extends Fragment implements OnClickListener { LinphoneAddress lAddress; try { lAddress = LinphoneCoreFactory.instance().createLinphoneAddress(sipUri); - Contact contact = ContactsManager.getInstance().findContactWithAddress(lAddress); + Contact contact = ContactsManager.getInstance().findContactWithAddress(getActivity().getContentResolver(), lAddress); if (contact != null) { LinphoneUtils.setImagePictureFromUri(view.getContext(), contactPicture.getView(),contact.getPhotoUri(), R.drawable.unknown_small); view.findViewById(R.id.addContactRow).setVisibility(View.GONE); diff --git a/src/org/linphone/HistoryFragment.java b/src/org/linphone/HistoryFragment.java index 6f7c2ee97..3a3b87ddc 100644 --- a/src/org/linphone/HistoryFragment.java +++ b/src/org/linphone/HistoryFragment.java @@ -178,7 +178,7 @@ public class HistoryFragment extends Fragment implements OnClickListener, OnChil address = log.getTo(); } - Contact contact = ContactsManager.getInstance().findContactWithAddress(address); + Contact contact = ContactsManager.getInstance().findContactWithAddress(getActivity().getContentResolver(), address); String sipUri = address.asStringUriOnly(); if (contact == null) { if (getResources().getBoolean(R.bool.only_display_username_if_unknown) && LinphoneUtils.isSipAddress(sipUri)) { diff --git a/src/org/linphone/HistorySimpleFragment.java b/src/org/linphone/HistorySimpleFragment.java index 266a84d78..aa5abdeff 100644 --- a/src/org/linphone/HistorySimpleFragment.java +++ b/src/org/linphone/HistorySimpleFragment.java @@ -392,7 +392,7 @@ public class HistorySimpleFragment extends Fragment implements OnClickListener, callDirection.setImageBitmap(outgoingCall); } - Contact c = ContactsManager.getInstance().findContactWithAddress(address); + Contact c = ContactsManager.getInstance().findContactWithAddress(getActivity().getContentResolver(), address); String displayName = null; final String sipUri = address.asStringUriOnly(); if(c != null){ diff --git a/src/org/linphone/InCallActivity.java b/src/org/linphone/InCallActivity.java index 052cfd18c..adbde2ca0 100644 --- a/src/org/linphone/InCallActivity.java +++ b/src/org/linphone/InCallActivity.java @@ -1299,7 +1299,7 @@ public class InCallActivity extends FragmentActivity implements OnClickListener // Image Row LinearLayout imageView = (LinearLayout) inflater.inflate(R.layout.active_call_image_row, container, false); - Contact contact = ContactsManager.getInstance().findContactWithAddress(lAddress); + Contact contact = ContactsManager.getInstance().findContactWithAddress(imageView.getContext().getContentResolver(), lAddress); if(contact != null) { displayOrHideContactPicture(imageView, contact.getPhotoUri(), false); } else { @@ -1326,7 +1326,7 @@ public class InCallActivity extends FragmentActivity implements OnClickListener private void setContactName(LinearLayout callView, LinphoneAddress lAddress, String sipUri, Resources resources) { TextView contact = (TextView) callView.findViewById(R.id.contactNameOrNumber); - Contact lContact = ContactsManager.getInstance().findContactWithAddress(lAddress); + Contact lContact = ContactsManager.getInstance().findContactWithAddress(callView.getContext().getContentResolver(), lAddress); if (lContact == null) { if (resources.getBoolean(R.bool.only_display_username_if_unknown) && LinphoneUtils.isSipAddress(sipUri)) { contact.setText(lAddress.getUserName()); diff --git a/src/org/linphone/IncomingCallActivity.java b/src/org/linphone/IncomingCallActivity.java index fa04b0ad9..81427cb60 100644 --- a/src/org/linphone/IncomingCallActivity.java +++ b/src/org/linphone/IncomingCallActivity.java @@ -124,7 +124,7 @@ public class IncomingCallActivity extends Activity implements LinphoneSliderTrig } LinphoneAddress address = mCall.getRemoteAddress(); // May be greatly sped up using a drawable cache - Contact contact = ContactsManager.getInstance().findContactWithAddress(address); + Contact contact = ContactsManager.getInstance().findContactWithAddress(getContentResolver(), address); LinphoneUtils.setImagePictureFromUri(this, mPictureView.getView(), contact != null ? contact.getPhotoUri() : null, R.drawable.unknown_small); // To be done after findUriPictureOfContactAndSetDisplayName called diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 3f3990067..2a4f4298b 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -518,7 +518,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene Log.e("Cannot display history details",e); return; } - Contact c = ContactsManager.getInstance().findContactWithAddress(lAddress); + Contact c = ContactsManager.getInstance().findContactWithAddress(getContentResolver(), lAddress); String displayName = c != null ? c.getName() : null; String pictureUri = c != null && c.getPhotoUri() != null ? c.getPhotoUri().toString() : null; @@ -611,7 +611,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene Log.e("Cannot display chat",e); return; } - Contact contact = ContactsManager.getInstance().findContactWithAddress(lAddress); + Contact contact = ContactsManager.getInstance().findContactWithAddress(getContentResolver(), lAddress); String displayName = contact != null ? contact.getName() : null; String pictureUri = contact != null && contact.getPhotoUri() != null ? contact.getPhotoUri().toString() : null; diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index 78e9ec489..3ebd4d8c8 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -715,7 +715,7 @@ public class LinphoneManager implements LinphoneCoreListener { } try { - Contact contact = ContactsManager.getInstance().findContactWithAddress(from); + Contact contact = ContactsManager.getInstance().findContactWithAddress(mServiceContext.getContentResolver(),from); if (!mServiceContext.getResources().getBoolean(R.bool.disable_chat__message_notification)) { if(contact != null) { LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), contact.getName(), textMessage); diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index 9d9c93110..45284019d 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -312,7 +312,7 @@ public final class LinphoneService extends Service { LinphoneAddress address = LinphoneCoreFactory.instance().createLinphoneAddress(userName,domain,null); address.setDisplayName(displayName); - Contact contact = ContactsManager.getInstance().findContactWithAddress(address); + Contact contact = ContactsManager.getInstance().findContactWithAddress(getContentResolver(), address); Uri pictureUri = contact != null ? contact.getPhotoUri() : null; Bitmap bm = null; try { @@ -390,7 +390,7 @@ public final class LinphoneService extends Service { Uri pictureUri = null; try { - Contact contact = ContactsManager.getInstance().findContactWithAddress(LinphoneCoreFactory.instance().createLinphoneAddress(fromSipUri)); + Contact contact = ContactsManager.getInstance().findContactWithAddress(getContentResolver(), LinphoneCoreFactory.instance().createLinphoneAddress(fromSipUri)); if (contact != null) pictureUri = contact.getPhotoUri(); } catch (LinphoneCoreException e1) {