|
@@ -13,9 +13,11 @@ import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import android.util.Log;
|
|
|
|
|
|
import com.wdkl.ncs.android.lib.base.BaseApplication;
|
|
import com.wdkl.ncs.android.lib.base.BaseApplication;
|
|
|
|
+import com.wdkl.ncs.android.middleware.model.ContactItem;
|
|
import com.wdkl.ncs.android.middleware.model.vo.WatchContactVO;
|
|
import com.wdkl.ncs.android.middleware.model.vo.WatchContactVO;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
public class ContactHelper {
|
|
public class ContactHelper {
|
|
@@ -345,6 +347,99 @@ public class ContactHelper {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static void setContact2(Context context, List<WatchContactVO> contactVOS) {
|
|
|
|
+ synchronized (lock) {
|
|
|
|
+ //获取设备上已经保存的所有联系人
|
|
|
|
+ //得到ContentResolver对象
|
|
|
|
+ ContentResolver cr = context.getContentResolver();
|
|
|
|
+ //取得电话本中开始一项的光标
|
|
|
|
+ Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
|
|
|
|
+ if (cursor != null){
|
|
|
|
+ //设备上保存的所有联系人
|
|
|
|
+ ArrayList<ContactItem> contactItems = new ArrayList<>();
|
|
|
|
+ while (cursor.moveToNext()) {
|
|
|
|
+ // 取得联系人名字
|
|
|
|
+ int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
|
|
|
|
+ String name = cursor.getString(nameFieldColumnIndex);
|
|
|
|
+ // 取得联系人ID
|
|
|
|
+ String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
|
|
|
|
+ Cursor phoneCursor = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
|
|
|
|
+ ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
|
|
|
|
+
|
|
|
|
+ // 取得电话号码(可能存在多个号码)
|
|
|
|
+ if (phoneCursor != null && phoneCursor.getCount() > 0) {
|
|
|
|
+ //存在多个号码的联系人直接删除
|
|
|
|
+ if (phoneCursor.getCount() > 1) {
|
|
|
|
+ cr.delete(ContactsContract.Contacts.CONTENT_URI, ContactsContract.Contacts._ID + " =?", new String[]{contactId});
|
|
|
|
+ cr.delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.RawContacts.CONTACT_ID + " =?", new String[]{contactId});
|
|
|
|
+ } else {
|
|
|
|
+ if (phoneCursor.moveToNext()) {
|
|
|
|
+ String strPhoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
|
|
|
|
+ if (!TextUtils.isEmpty(strPhoneNumber)) {
|
|
|
|
+ //过滤空格
|
|
|
|
+ strPhoneNumber = strPhoneNumber.replaceAll(" ", "");
|
|
|
|
+ //过滤+86
|
|
|
|
+ strPhoneNumber = strPhoneNumber.replace("+86", "");
|
|
|
|
+
|
|
|
|
+ ContactItem item = new ContactItem();
|
|
|
|
+ item.setName(name);
|
|
|
|
+ item.setContactId(contactId);
|
|
|
|
+ item.setNumber(strPhoneNumber);
|
|
|
|
+ contactItems.add(item);
|
|
|
|
+ } else {
|
|
|
|
+ //删除空号码联系人
|
|
|
|
+ cr.delete(ContactsContract.Contacts.CONTENT_URI, ContactsContract.Contacts._ID + " =?", new String[]{contactId});
|
|
|
|
+ cr.delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.RawContacts.CONTACT_ID + " =?", new String[]{contactId});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ phoneCursor.close();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (WatchContactVO contactVO: contactVOS) {
|
|
|
|
+ Log.d(TAG, "update contact: " + contactVO.getName() + ", " + contactVO.getPhoneNumber());
|
|
|
|
+ if (TextUtils.isEmpty(contactVO.getName()) || TextUtils.isEmpty(contactVO.getPhoneNumber())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (contactItems.size() > 0) {
|
|
|
|
+ //设备中有联系人,循环遍历,
|
|
|
|
+ Iterator<ContactItem> iterator = contactItems.iterator();
|
|
|
|
+ String contactNum = contactVO.getPhoneNumber();
|
|
|
|
+ //过滤空格
|
|
|
|
+ contactNum = contactNum.replaceAll(" ", "");
|
|
|
|
+ //过滤+86
|
|
|
|
+ contactNum = contactNum.replace("+86", "");
|
|
|
|
+ //联系人及号码是否完全匹配
|
|
|
|
+ boolean contactExist = false;
|
|
|
|
+ while (iterator.hasNext()) {
|
|
|
|
+ ContactItem item = iterator.next();
|
|
|
|
+ if (item.getNumber().equals(contactNum) && item.getName().equals(contactVO.getName())) {
|
|
|
|
+ //联系人号码和名称完全匹配
|
|
|
|
+ contactExist = true;
|
|
|
|
+ } else if (item.getNumber().equals(contactNum) && !item.getName().equals(contactVO.getName())) {
|
|
|
|
+ //联系人号码匹配,名称不匹配,删除该联系人
|
|
|
|
+ Log.e(TAG, "delete invalid contact: " + contactNum + ", " + item.getName());
|
|
|
|
+ cr.delete(ContactsContract.Contacts.CONTENT_URI, ContactsContract.Contacts._ID + " =?", new String[]{item.getContactId()});
|
|
|
|
+ cr.delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.RawContacts.CONTACT_ID + " =?", new String[]{item.getContactId()});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //号码不存在,添加
|
|
|
|
+ if (!contactExist) {
|
|
|
|
+ insertContact(context, contactVO.getName(), contactVO.getPhoneNumber(), null);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //设备未保存联系人,直接添加
|
|
|
|
+ insertContact(context, contactVO.getName(), contactVO.getPhoneNumber(), null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ cursor.close();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
//批量更新通讯录
|
|
//批量更新通讯录
|
|
public static void updateContacts(Context context, List<WatchContactVO> contactVOS, Callback callback) {
|
|
public static void updateContacts(Context context, List<WatchContactVO> contactVOS, Callback callback) {
|