안녕하세요 Intent를 이용해서 연락처에 정보를 저장할 때 궁금한 부분이 있어서 질문드립니다.
지금 아래와 같은 코드를 이용해서 기존 연락처에 저장하는 로직을 구현해두었습니다.
private void saveToOldContact(final Map<String, String> param) {
Intent contactIntent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT);
// 직장전화번호 입력
if(!"".equals(param.get("workPhone"))) {
String workPhone = param.get("workPhone");
if(!"없음".equals(workPhone) && !"".equals(workPhone) && !"null".equals(workPhone) && workPhone != null) {
if(!workPhone.matches("(?i).*055-.*")) {
workPhone = "055-" + workPhone;
}
contactIntent.putExtra(ContactsContract.Intents.Insert.PHONE, workPhone);
contactIntent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK);
contactIntent.setData(Uri.fromParts("tel", workPhone, null));
}
}
// 집 전화번호 입력
if(!"".equals(param.get("homePhone"))) {
String homePhone = param.get("homePhone");
if(!"없음".equals(homePhone) && !"".equals(homePhone) && !"null".equals(homePhone) && homePhone != null) {
if(!homePhone.matches("(?i).*055-.*")) {
homePhone = "055-" + homePhone;
}
contactIntent.putExtra(ContactsContract.Intents.Insert.PHONE, homePhone);
contactIntent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
contactIntent.setData(Uri.fromParts("tel", homePhone, null));
}
}
// 휴대전화번호 입력
if(!"".equals(param.get("cellPhone"))) {
String cellPhone = param.get("cellPhone");
if(!"없음".equals(cellPhone) && !"".equals(cellPhone) && !"null".equals(cellPhone) && cellPhone != null) {
contactIntent.putExtra(ContactsContract.Intents.Insert.PHONE, cellPhone);
contactIntent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
contactIntent.setData(Uri.fromParts("tel", cellPhone, null));
}
}
// 이메일 입력
if(!"".equals(param.get("email"))) {
String email = param.get("email");
if(!"없음".equals(email) && !"".equals(email) && !"null".equals(email) && email != null) {
contactIntent.putExtra(ContactsContract.Intents.Insert.EMAIL, param.get("email"));
contactIntent.putExtra(ContactsContract.Intents.Insert.EMAIL_TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK);
contactIntent.setData(Uri.fromParts("mailto", param.get("email"), null));
}
}
// 메모 입력
if(!"".equals(param.get("note"))) {
contactIntent.putExtra(ContactsContract.Intents.Insert.NOTES, param.get("note"));
}
// 이름 필드 입력
if(!"".equals(param.get("name"))) {
contactIntent.putExtra(ContactsContract.Intents.Insert.NAME, param.get("name"));
}
startActivity(contactIntent);
}
Intent 속성에 ContactsContract.Intents.SHOW_OR_CREATE_CONTACT를 이용해서
새로 추가를 하거나 기존 연락처를 선택해서 저장하도록 했는데
예를 들어서 A라는 사람의 집전화번호를 저장을 해둔 상태에서 휴대폰 전화번호를 위 코드를 이용해서
기존에 저장해둔 A라는 사람을 선택해서 휴대폰을 추가하게 되면 같은 번호가 이미 있다는 메시지가 한번 뜨고 저장이 안되다가 한번 더 누르면 저장이 됩니다.
기존 연락처에 저장이라는 걸 구현을 할려고 찾다가 Intent를 ContactsContract.Intents.SHOW_OR_CREATE_CONTACT로 주고 하면 된다고 해서
구현을 했는데 이런 문제가 있던데 같은 번호가 이미 있다는 메시지를 피할려면 위 코드 말고 다른 방법으로 구현을 해야하는지 궁금합니다.
저와 비슷한 문제를 겪으신 분들 중 해결하셨거나 도움 부탁드립니다.