2014-06-23 3 views
1

나는이 같은 장치에 연락처를 추가하는 의도를 호출설정 ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL는

    Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); 
        intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE); 
        intent.putExtra(ContactsContract.Intents.Insert.NAME, 
          user.getName()); 
        intent.putExtra(ContactsContract.Intents.Insert.IM_HANDLE, 
          user.getID()); 
        intent.putExtra(
          ContactsContract.Intents.Insert.IM_PROTOCOL, 
          ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM); 
        startActivityForResult(intent, 0); 

documentation는 말한다 :

공공 정적 최종 문자열 PROTOCOL
이 열은 정의 된 상수 중 하나와 함께 으로 채워 져야합니다. PROTOCOL_YAHOO. 이 열의 값 이 PROTOCOL_CUSTOM이면 CUSTOM_PROTOCOL에 의 사용자 지정 프로토콜 이름이 있어야합니다. 상수 값 : "data5".

내가 CUSTOM_PROTOCOL의 이름을 선택해야 할 경우 빈 글고 치기로 팝업 대화 상자가 나타납니다 문의 추가하거나 편집을 클릭

. 문서에 따르면 나는 어떻게 설정하는 방법을 찾을 수 없습니다 CUSTOM_PROTOCOL 값.

+0

아직 해결 방법을 찾았습니까? 나는 똑같은 문제로 어려움을 겪고있다. – Shaun

+0

예. 인 텐트를 통해 사용자 정의 프로토콜을 전달할 수는 없습니다. :( –

+0

답변 해 주셔서 감사합니다. 위 코드를 대체하기 위해 어떤 코드를 사용 했습니까? – Shaun

답변

0

이렇게 사용자 정의 프로토콜을 추가 할 수 있습니다.

Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT); 
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE); 
intent.putExtra(ContactsContract.Intents.Insert.NAME, user.getName()); 

ArrayList<ContentValues> data = new ArrayList<ContentValues>(); 
ContentValues values = new ContentValues(); 
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE); 
values.put(ContactsContract.CommonDataKinds.Im.DATA, user.getID()); 
values.put(ContactsContract.CommonDataKinds.Im.PROTOCOL, ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM); 
values.put(ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL, "your_protocol"); 
data.add(values); 
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, data); 

startActivityForResult(intent, 0);