🐛 Fixed new contact SIP adress being duplicated
This commit is contained in:
parent
d8aecc5990
commit
339d58e51f
6 changed files with 109 additions and 109 deletions
|
@ -43,6 +43,8 @@ import org.linphone.core.ChatRoom;
|
|||
import org.linphone.core.ChatRoomListenerStub;
|
||||
import org.linphone.core.Core;
|
||||
import org.linphone.core.Factory;
|
||||
import org.linphone.core.PresenceBasicStatus;
|
||||
import org.linphone.core.PresenceModel;
|
||||
import org.linphone.core.ProxyConfig;
|
||||
import org.linphone.fragments.FragmentsAvailable;
|
||||
import org.linphone.mediastream.Log;
|
||||
|
@ -205,11 +207,15 @@ public class ContactDetailsFragment extends Fragment implements OnClickListener
|
|||
}
|
||||
}
|
||||
|
||||
String contactAddress = contact.getPresenceModelForUriOrTel(noa.getValue());
|
||||
if (contactAddress != null) {
|
||||
v.findViewById(R.id.friendLinphone).setVisibility(View.GONE);
|
||||
if (contact.getFriend() != null) {
|
||||
PresenceModel pm = contact.getFriend().getPresenceModelForUriOrTel(noa.getValue());
|
||||
if (pm != null && pm.getBasicStatus().equals(PresenceBasicStatus.Open)) {
|
||||
v.findViewById(R.id.friendLinphone).setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
String contactAddress = contact.getPresenceModelForUriOrTel(noa.getValue());
|
||||
if (!displayChatAddressOnly) {
|
||||
v.findViewById(R.id.contact_call).setOnClickListener(dialListener);
|
||||
if (contactAddress != null) {
|
||||
|
|
|
@ -109,20 +109,20 @@ public class ContactEditorFragment extends Fragment {
|
|||
|
||||
view = inflater.inflate(R.layout.contact_edit, container, false);
|
||||
|
||||
phoneNumbersSection = (LinearLayout) view.findViewById(R.id.phone_numbers);
|
||||
phoneNumbersSection = view.findViewById(R.id.phone_numbers);
|
||||
if (getResources().getBoolean(R.bool.hide_phone_numbers_in_editor) || !ContactsManager.getInstance().hasContactsAccess()) {
|
||||
//Currently linphone friends don't support phone numbers, so hide them
|
||||
phoneNumbersSection.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
sipAddressesSection = (LinearLayout) view.findViewById(R.id.sip_addresses);
|
||||
sipAddressesSection = view.findViewById(R.id.sip_addresses);
|
||||
if (getResources().getBoolean(R.bool.hide_sip_addresses_in_editor)) {
|
||||
sipAddressesSection.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
deleteContact = (ImageView) view.findViewById(R.id.delete_contact);
|
||||
deleteContact = view.findViewById(R.id.delete_contact);
|
||||
|
||||
cancel = (ImageView) view.findViewById(R.id.cancel);
|
||||
cancel = view.findViewById(R.id.cancel);
|
||||
cancel.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@ -130,7 +130,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
ok = (ImageView) view.findViewById(R.id.ok);
|
||||
ok = view.findViewById(R.id.ok);
|
||||
ok.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@ -164,7 +164,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
lastName = (EditText) view.findViewById(R.id.contactLastName);
|
||||
lastName = view.findViewById(R.id.contactLastName);
|
||||
// Hack to display keyboard when touching focused edittext on Nexus One
|
||||
if (Version.sdkStrictlyBelow(Version.API11_HONEYCOMB_30)) {
|
||||
lastName.setOnClickListener(new OnClickListener() {
|
||||
|
@ -194,7 +194,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
firstName = (EditText) view.findViewById(R.id.contactFirstName);
|
||||
firstName = view.findViewById(R.id.contactFirstName);
|
||||
firstName.addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
|
@ -215,7 +215,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
});
|
||||
|
||||
|
||||
organization = (EditText) view.findViewById(R.id.contactOrganization);
|
||||
organization = view.findViewById(R.id.contactOrganization);
|
||||
boolean isOrgVisible = getResources().getBoolean(R.bool.display_contact_organization);
|
||||
if (!isOrgVisible) {
|
||||
organization.setVisibility(View.GONE);
|
||||
|
@ -241,8 +241,8 @@ public class ContactEditorFragment extends Fragment {
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
final Dialog dialog = LinphoneActivity.instance().displayDialog(getString(R.string.delete_text));
|
||||
Button delete = (Button) dialog.findViewById(R.id.delete_button);
|
||||
Button cancel = (Button) dialog.findViewById(R.id.cancel);
|
||||
Button delete = dialog.findViewById(R.id.delete_button);
|
||||
Button cancel = dialog.findViewById(R.id.cancel);
|
||||
|
||||
delete.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
|
@ -267,7 +267,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
deleteContact.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
contactPicture = (ImageView) view.findViewById(R.id.contact_picture);
|
||||
contactPicture = view.findViewById(R.id.contact_picture);
|
||||
if (contact != null) {
|
||||
LinphoneUtils.setImagePictureFromUri(getActivity(), contactPicture, contact.getPhotoUri(), contact.getThumbnailUri());
|
||||
} else {
|
||||
|
@ -286,7 +286,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
sipAddresses = initSipAddressFields(contact);
|
||||
numbers = initNumbersFields(contact);
|
||||
|
||||
addSipAddress = (ImageView) view.findViewById(R.id.add_address_field);
|
||||
addSipAddress = view.findViewById(R.id.add_address_field);
|
||||
if (getResources().getBoolean(R.bool.allow_only_one_sip_address)) {
|
||||
addSipAddress.setVisibility(View.GONE);
|
||||
}
|
||||
|
@ -297,7 +297,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
addNumber = (ImageView) view.findViewById(R.id.add_number_field);
|
||||
addNumber = view.findViewById(R.id.add_number_field);
|
||||
if (getResources().getBoolean(R.bool.allow_only_one_phone_number)) {
|
||||
addNumber.setVisibility(View.GONE);
|
||||
}
|
||||
|
@ -426,7 +426,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
|
||||
private LinearLayout initNumbersFields(final LinphoneContact contact) {
|
||||
LinearLayout controls = (LinearLayout) view.findViewById(R.id.controls_numbers);
|
||||
LinearLayout controls = view.findViewById(R.id.controls_numbers);
|
||||
controls.removeAllViews();
|
||||
|
||||
if (contact != null) {
|
||||
|
@ -449,7 +449,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
|
||||
if (newDisplayName != null) {
|
||||
EditText lastNameEditText = (EditText) view.findViewById(R.id.contactLastName);
|
||||
EditText lastNameEditText = view.findViewById(R.id.contactLastName);
|
||||
if (view != null)
|
||||
lastNameEditText.setText(newDisplayName);
|
||||
}
|
||||
|
@ -462,7 +462,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
|
||||
private LinearLayout initSipAddressFields(final LinphoneContact contact) {
|
||||
LinearLayout controls = (LinearLayout) view.findViewById(R.id.controls_sip_address);
|
||||
LinearLayout controls = view.findViewById(R.id.controls_sip_address);
|
||||
controls.removeAllViews();
|
||||
|
||||
if (contact != null) {
|
||||
|
@ -526,7 +526,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
|
||||
final View view = inflater.inflate(R.layout.contact_edit_row, null);
|
||||
|
||||
final EditText noa = (EditText) view.findViewById(R.id.numoraddr);
|
||||
final EditText noa = view.findViewById(R.id.numoraddr);
|
||||
if (!isSIP) {
|
||||
noa.setInputType(InputType.TYPE_CLASS_PHONE);
|
||||
}
|
||||
|
@ -549,7 +549,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
nounoa.setValue(noa.getText().toString());
|
||||
}
|
||||
|
||||
ImageView delete = (ImageView) view.findViewById(R.id.delete_field);
|
||||
ImageView delete = view.findViewById(R.id.delete_field);
|
||||
if ((getResources().getBoolean(R.bool.allow_only_one_phone_number) && !isSIP) || (getResources().getBoolean(R.bool.allow_only_one_sip_address) && isSIP)) {
|
||||
delete.setVisibility(View.GONE);
|
||||
}
|
||||
|
@ -572,7 +572,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
final View view = inflater.inflate(R.layout.contact_edit_row, null);
|
||||
final LinphoneNumberOrAddress nounoa = new LinphoneNumberOrAddress(null, isSip);
|
||||
|
||||
final EditText noa = (EditText) view.findViewById(R.id.numoraddr);
|
||||
final EditText noa = view.findViewById(R.id.numoraddr);
|
||||
numbersAndAddresses.add(nounoa);
|
||||
noa.setHint(isSip ? getString(R.string.sip_address) : getString(R.string.phone_number));
|
||||
if (!isSip) {
|
||||
|
@ -594,7 +594,7 @@ public class ContactEditorFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
final ImageView delete = (ImageView) view.findViewById(R.id.delete_field);
|
||||
final ImageView delete = view.findViewById(R.id.delete_field);
|
||||
if ((getResources().getBoolean(R.bool.allow_only_one_phone_number) && !isSip) || (getResources().getBoolean(R.bool.allow_only_one_sip_address) && isSip)) {
|
||||
delete.setVisibility(View.GONE);
|
||||
}
|
||||
|
|
|
@ -146,7 +146,6 @@ public class ContactsListAdapter extends SelectableAdapter<ContactsListAdapter.V
|
|||
|
||||
holder.delete.setVisibility(isEditionEnabled() ? View.VISIBLE : View.INVISIBLE);
|
||||
holder.delete.setChecked(isSelected(position));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -342,14 +342,9 @@ public class ContactsListFragment extends Fragment implements OnItemClickListene
|
|||
public void onContactsUpdated() {
|
||||
if (!LinphoneActivity.isInstanciated() || LinphoneActivity.instance().getCurrentFragment() != FragmentsAvailable.CONTACTS_LIST)
|
||||
return;
|
||||
ContactsListAdapter adapter = (ContactsListAdapter) contactsList.getAdapter();
|
||||
if (adapter != null) {
|
||||
if (onlyDisplayLinphoneContacts) {
|
||||
adapter.updateDataSet(ContactsManager.getInstance().getSIPContacts());
|
||||
} else {
|
||||
adapter.updateDataSet(ContactsManager.getInstance().getContacts());
|
||||
}
|
||||
contactsFetchInProgress.setVisibility(View.GONE);
|
||||
if (mContactAdapter != null) {
|
||||
mContactAdapter.updateDataSet(onlyDisplayLinphoneContacts ? ContactsManager.getInstance().getSIPContacts() : ContactsManager.getInstance().getContacts());
|
||||
mContactAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -97,13 +97,6 @@ public class ContactsManager extends ContentObserver implements FriendListListen
|
|||
if (LinphoneManager.getLcIfManagerNotDestroyedOrNull() != null) {
|
||||
magicSearch = LinphoneManager.getLcIfManagerNotDestroyedOrNull().createMagicSearch();
|
||||
}
|
||||
|
||||
Core lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
||||
if (lc != null) {
|
||||
for (FriendList list : lc.getFriendsLists()) {
|
||||
list.setListener(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
|
@ -267,11 +260,14 @@ public class ContactsManager extends ContentObserver implements FriendListListen
|
|||
return null;
|
||||
}
|
||||
|
||||
public synchronized void refreshSipContact(Friend lf) {
|
||||
public synchronized boolean refreshSipContact(Friend lf) {
|
||||
LinphoneContact contact = (LinphoneContact) lf.getUserData();
|
||||
if (contact != null && !mSipContacts.contains(contact)) {
|
||||
mSipContacts.add(contact);
|
||||
Collections.sort(mSipContacts);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String getAddressOrNumberForAndroidContact(ContentResolver resolver, Uri contactUri) {
|
||||
|
@ -352,14 +348,14 @@ public class ContactsManager extends ContentObserver implements FriendListListen
|
|||
@Override
|
||||
public void onPresenceReceived(FriendList list, Friend[] friends) {
|
||||
for (Friend lf : friends) {
|
||||
ContactsManager.getInstance().refreshSipContact(lf);
|
||||
}
|
||||
|
||||
Collections.sort(mSipContacts);
|
||||
boolean newContact = ContactsManager.getInstance().refreshSipContact(lf);
|
||||
if (newContact) {
|
||||
for (ContactsUpdatedListener listener : contactsUpdatedListeners) {
|
||||
listener.onContactsUpdated();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void fetchContactsSync() {
|
||||
mActivity.getLoaderManager().initLoader(CONTACTS_LOADER, null, this);
|
||||
|
@ -504,10 +500,14 @@ public class ContactsManager extends ContentObserver implements FriendListListen
|
|||
setSipContacts(sipContacts);
|
||||
|
||||
if (LinphonePreferences.instance() != null && LinphonePreferences.instance().isFriendlistsubscriptionEnabled()) {
|
||||
if (mActivity.getString(R.string.rls_uri) != null) {
|
||||
LinphoneManager.getLc().getFriendsLists()[0].setRlsUri(mActivity.getString(R.string.rls_uri));
|
||||
String rls = mActivity.getString(R.string.rls_uri);
|
||||
for (FriendList list : LinphoneManager.getLc().getFriendsLists()) {
|
||||
if (rls != null && rls.equals(list.getRlsAddress().asStringUriOnly())) {
|
||||
list.setRlsUri(mActivity.getString(R.string.rls_uri));
|
||||
}
|
||||
list.setListener(this);
|
||||
list.updateSubscriptions();
|
||||
}
|
||||
LinphoneManager.getLc().getFriendsLists()[0].updateSubscriptions();
|
||||
}
|
||||
|
||||
long timeElapsed = (new Date()).getTime() - contactsTime.getTime();
|
||||
|
@ -516,6 +516,10 @@ public class ContactsManager extends ContentObserver implements FriendListListen
|
|||
TimeUnit.MILLISECONDS.toSeconds(timeElapsed) -
|
||||
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(timeElapsed)));
|
||||
Log.i("[ContactsManager] For " + contacts.size() + " contacts: " + time + " elapsed since starting");
|
||||
|
||||
for (ContactsUpdatedListener listener : contactsUpdatedListeners) {
|
||||
listener.onContactsUpdated();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -243,6 +243,14 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
|
|||
public void removeNumberOrAddress(LinphoneNumberOrAddress noa) {
|
||||
if (noa != null && noa.getOldValue() != null) {
|
||||
if (isAndroidContact()) {
|
||||
if (androidTagId != null && noa.isSIPAddress()) {
|
||||
String select = ContactsContract.Data.RAW_CONTACT_ID + "=? AND " + ContactsContract.Data.DATA1 + "=?";
|
||||
String[] args = new String[]{androidTagId, noa.getOldValue()};
|
||||
|
||||
changesToCommit.add(ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI)
|
||||
.withSelection(select, args)
|
||||
.build());
|
||||
} else {
|
||||
String select;
|
||||
if (noa.isSIPAddress()) {
|
||||
select = ContactsContract.Data.CONTACT_ID + "=? AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.CommonDataKinds.SipAddress.SIP_ADDRESS + "=?";
|
||||
|
@ -251,14 +259,6 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
|
|||
}
|
||||
String[] args = new String[]{getAndroidId(), noa.getOldValue()};
|
||||
|
||||
changesToCommit.add(ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI)
|
||||
.withSelection(select, args)
|
||||
.build());
|
||||
|
||||
if (androidTagId != null && noa.isSIPAddress()) {
|
||||
select = ContactsContract.Data.RAW_CONTACT_ID + "=? AND " + ContactsContract.Data.DATA1 + "=?";
|
||||
args = new String[]{androidTagId, noa.getOldValue()};
|
||||
|
||||
changesToCommit.add(ContentProviderOperation.newDelete(ContactsContract.Data.CONTENT_URI)
|
||||
.withSelection(select, args)
|
||||
.build());
|
||||
|
@ -289,6 +289,25 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
|
|||
if (noa != null && noa.getValue() != null) {
|
||||
if (isAndroidContact()) {
|
||||
if (noa.getOldValue() == null) {
|
||||
if (noa.isSIPAddress() && LinphoneManager.getInstance().getContext().getResources().getBoolean(R.bool.use_linphone_tag)) {
|
||||
if (androidTagId != null) {
|
||||
changesToCommit.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
|
||||
.withValue(ContactsContract.Data.RAW_CONTACT_ID, androidTagId)
|
||||
.withValue(ContactsContract.Data.MIMETYPE, ContactsManager.getInstance().getString(R.string.sync_mimetype))
|
||||
.withValue(ContactsContract.Data.DATA1, noa.getValue())
|
||||
.withValue(ContactsContract.Data.DATA2, ContactsManager.getInstance().getString(R.string.app_name))
|
||||
.withValue(ContactsContract.Data.DATA3, noa.getValue())
|
||||
.build());
|
||||
} else {
|
||||
changesToCommit2.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
|
||||
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
|
||||
.withValue(ContactsContract.Data.MIMETYPE, ContactsManager.getInstance().getString(R.string.sync_mimetype))
|
||||
.withValue(ContactsContract.Data.DATA1, noa.getValue())
|
||||
.withValue(ContactsContract.Data.DATA2, ContactsManager.getInstance().getString(R.string.app_name))
|
||||
.withValue(ContactsContract.Data.DATA3, noa.getValue())
|
||||
.build());
|
||||
}
|
||||
} else {
|
||||
ContentValues values = new ContentValues();
|
||||
if (noa.isSIPAddress()) {
|
||||
values.put(ContactsContract.Data.MIMETYPE, CommonDataKinds.SipAddress.CONTENT_ITEM_TYPE);
|
||||
|
@ -312,12 +331,12 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
|
|||
.withValues(values)
|
||||
.build());
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
if (noa.isSIPAddress() && LinphoneManager.getInstance().getContext().getResources().getBoolean(R.bool.use_linphone_tag)) {
|
||||
if (androidTagId != null) {
|
||||
changesToCommit.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
|
||||
.withValue(ContactsContract.Data.RAW_CONTACT_ID, androidTagId)
|
||||
.withValue(ContactsContract.Data.MIMETYPE, ContactsManager.getInstance().getString(R.string.sync_mimetype))
|
||||
changesToCommit.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
|
||||
.withSelection(ContactsContract.Data.RAW_CONTACT_ID + "=? AND " + ContactsContract.Data.DATA1 + "=? ", new String[]{androidTagId, noa.getOldValue()})
|
||||
.withValue(ContactsContract.Data.DATA1, noa.getValue())
|
||||
.withValue(ContactsContract.Data.DATA2, ContactsManager.getInstance().getString(R.string.app_name))
|
||||
.withValue(ContactsContract.Data.DATA3, noa.getValue())
|
||||
|
@ -331,7 +350,6 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
|
|||
.withValue(ContactsContract.Data.DATA3, noa.getValue())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ContentValues values = new ContentValues();
|
||||
String select;
|
||||
|
@ -350,24 +368,6 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
|
|||
.withSelection(select, args)
|
||||
.withValues(values)
|
||||
.build());
|
||||
|
||||
if (noa.isSIPAddress() && LinphoneManager.getInstance().getContext().getResources().getBoolean(R.bool.use_linphone_tag)) {
|
||||
if (androidTagId != null) {
|
||||
changesToCommit.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
|
||||
.withSelection(ContactsContract.Data.RAW_CONTACT_ID + "=? AND " + ContactsContract.Data.DATA1 + "=? ", new String[]{androidTagId, noa.getOldValue()})
|
||||
.withValue(ContactsContract.Data.DATA1, noa.getValue())
|
||||
.withValue(ContactsContract.Data.DATA2, ContactsManager.getInstance().getString(R.string.app_name))
|
||||
.withValue(ContactsContract.Data.DATA3, noa.getValue())
|
||||
.build());
|
||||
} else {
|
||||
changesToCommit2.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
|
||||
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
|
||||
.withValue(ContactsContract.Data.MIMETYPE, ContactsManager.getInstance().getString(R.string.sync_mimetype))
|
||||
.withValue(ContactsContract.Data.DATA1, noa.getValue())
|
||||
.withValue(ContactsContract.Data.DATA2, ContactsManager.getInstance().getString(R.string.app_name))
|
||||
.withValue(ContactsContract.Data.DATA3, noa.getValue())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -483,10 +483,6 @@ public class LinphoneContact implements Serializable, Comparable<LinphoneContact
|
|||
|
||||
public void delete() {
|
||||
if (isAndroidContact()) {
|
||||
String select = ContactsContract.Data.CONTACT_ID + " = ?";
|
||||
String[] args = new String[]{getAndroidId()};
|
||||
changesToCommit.add(ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI).withSelection(select, args).build());
|
||||
save();
|
||||
ContactsManager.getInstance().delete(getAndroidId());
|
||||
}
|
||||
if (isFriend()) {
|
||||
|
|
Loading…
Reference in a new issue