判斷本地和雲端通訊錄是否一致

由於判斷手機號是否相等是非常困難的,因爲本地可能存在多個相同聯繫人名字,雲端也是.

所以比較兩個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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章