2011-03-04 6 views
2

가능한 중복 :
How to add new contacts in android안드로이드 쓰기 연락처

은 내가 어떻게 연락처에 이름을 추가 할 수 있습니까? 나는 두 개의 스피너를 가지고 있는데 하나는 성을위한 것이고 다른 하나는 성을위한 것이다. 할당 된 변수는 linkname1 및 linkname2입니다. 사용자가 확인 버튼을 누르면 (대화 상자에 모두 표시됨) 이름 (linkname1 + ""+ linkname2)이 연락처에 추가되어야합니다. 연락처를 읽을 수는 있지만 어떻게 쓰나요?

감사

업데이트 : 나는 또한이 시도 :

newname = linkname1 + " " + linkname2; 
ContentValues values = new ContentValues(); 
vales.put(ContactsContract.Contacts.DISPLAY_NAME, newname); 

이 :

StringBuffer strBuf = new StringBuffer(); 
strBuf.append(linkname1); 
strBuf.append(" "); 
strBuf.append(linkname2); 
ContentValues values = new ContentValues(); 
values.put(ContactsContract.Contacts.DISPLAY_NAME, strBuf.toString()); 

그러나 새로운 이름이 연락처 목록에 표시되지 않습니다. 어떻게에

답변

1

콘텐츠 공급자는 여전히 작동하지만 연락처 계약 2.2로 대체되었습니다.

ArrayList<ContentProviderOperation> ops = 
      new ArrayList<ContentProviderOperation>(); 
... 
int rawContactInsertIndex = ops.size(); 
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) 
      .withValue(RawContacts.ACCOUNT_TYPE, accountType) 
      .withValue(RawContacts.ACCOUNT_NAME, accountName) 
      .build()); 

ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI) 
      .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) 
      .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(StructuredName.GIVEN_NAME, linkname1) 
      .withValue(StructuredName.FAMILY_NAME, linkname2) 
      .build()); 

getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 

계정 이름과 당신이 AccountManager 서비스에서 조회 할 것이다 입력 : 다음 코드는 새 연락처 계약 업체와 함께 작동합니다. 계정 (예 : Local 또는 Google)을 선택하거나 사용자에게 알리십시오.

관련 문제