마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Intent를 이용한 연락처 저장 관련 질문드립니다.

0 추천

안녕하세요 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로 주고 하면 된다고 해서

구현을 했는데 이런 문제가 있던데 같은 번호가 이미 있다는 메시지를 피할려면 위 코드 말고 다른 방법으로 구현을 해야하는지 궁금합니다.

저와 비슷한 문제를 겪으신 분들 중 해결하셨거나 도움 부탁드립니다.

역전의용사 (190 포인트) 님이 2013년 5월 6일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...