由於判斷手機號是否相等是非常困難的,因爲本地可能存在多個相同聯繫人名字,雲端也是.
所以比較兩個list字符串是否相等,這樣效率極大的提高.
//是否存在手機號
private boolean isPhoneDifference(List localContactListBeanList, List savedBeans) {
for (ContactListBean contactListBeanLocal : localContactListBeanList) {
String localContactName = contactListBeanLocal.getContactsName();
for (ContactListBean contactListSavedBean : savedBeans) {
String savedName = contactListSavedBean.getContactsName();
if (localContactName.equals(savedName)) {
List<PhoneListBean> savedPhoneListBeanList = contactListSavedBean.getPhoneList();
List<PhoneListBean> localPhoneListBeans = contactListBeanLocal.getPhoneList();
List<String> phoneSaved = new ArrayList<>();
List<String> phoneLocal = new ArrayList<>();
for (PhoneListBean phoneInfoCloud : savedPhoneListBeanList) {
phoneSaved.add(phoneInfoCloud.getNumber());
}
for (PhoneListBean phoneInfoLocal : localPhoneListBeans) {
phoneLocal.add(phoneInfoLocal.getNumber());
}
boolean isEquals = equalsList(phoneSaved, phoneLocal);
if (isEquals) {
break;
}
if (!isEquals) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
EvtLog.e(TAG, "phoneSaved" + String.join(",", phoneSaved));
EvtLog.e(TAG, "phoneLocal" + String.join(",", phoneLocal));
}
EvtLog.e(TAG, "開啓自動備份通訊錄2222");
return true;
}
}
}
}
return false;
}
public boolean equalsList(List<String> list1, List<String> list2) {
// null情況
if ((list1 == null && list2 != null)
|| (list1 != null && list2 == null)) {
return false;
}
if (list1.size() != list2.size()) {
return false;
}
String[] arr1 = list1.toArray(new String[]{});
String[] arr2 = list2.toArray(new String[]{});
Arrays.sort(arr1);
Arrays.sort(arr1);
return Arrays.equals(arr1, arr2);
}
private boolean isExistThePhone(List<PhoneListBean> localPhoneListBeans, List<PhoneListBean> savedPhoneListBeanList) {
for (PhoneListBean savedPhoneListBean : savedPhoneListBeanList) {
String savedPhoneNum = savedPhoneListBean.getNumber();
if (savedPhoneNum != null) {
savedPhoneNum = savedPhoneNum.replaceAll(" ", "");
EvtLog.e(TAG, "savedPhoneNum==" + savedPhoneNum);
for (PhoneListBean localPhoneListBean : localPhoneListBeans) {
String localPhoneNum = localPhoneListBean.getNumber();
if (localPhoneNum != null) {
localPhoneNum = localPhoneNum.replaceAll(" ", "");
EvtLog.e(TAG, "localPhoneNum==" + localPhoneNum);
if (savedPhoneNum.equals(localPhoneNum)) {
return true;
}
}
}
}
}
return false;
}
private boolean isNameDifference(List<ContactListBean> localContactListBeanList,
List<ContactListBean> savedBeans) {
for (ContactListBean localContactListBean : localContactListBeanList) {
if (!isExitTheName(savedBeans, localContactListBean)) {
return true;
}
}
return false;
}
private boolean isExitTheName(List<ContactListBean> savedBeans, ContactListBean localContactListBean) {
String localContactName = localContactListBean.getContactsName();
if (localContactName != null) {
localContactName = localContactName.replaceAll(" ", "");
EvtLog.e(TAG, "contactName==" + localContactName);
for (ContactListBean contactListSavedBean : savedBeans) {
String savedName = contactListSavedBean.getContactsName();
if (savedName != null) {
savedName = savedName.replaceAll(" ", "");
EvtLog.e(TAG, "savedName==" + savedName);
if (localContactName.equals(savedName)) {
return true;
}
}
}
}
return false;
}