안드로이드 연락처 앱을 만들고 있으므로 정기적으로 사용자의 연락처를 읽고 앱에 저장합니다. 이를 위해, 나는 내 응용 프로그램에서 나는 업데이트해야하는 접촉 알 수 있도록하는 것이 ID
의 어떤 종류에 의존 (또는 추가/삭제) 할 필요 Contacts Provider 그들 중 몇 가지 제공 :Android 연락처를 읽을 때 SOURCE_ID에 의존해야하나요?
CONTACT_ID
가 집계 접촉 ID입니다 ,- 각 집계 접촉은 각각 하나 이상의 원료 연락처로 구성되어 자신의
RAW_CONTACT_ID
, - 그리고 가장 중요한 것은, 각 원시 연락이 접촉이있는 ID, 즉 서버 ID 있어야하는
SOURCE_ID
을 가지고 이 계정의 서버에 있습니다.
SOURCE_ID
에 의존하는 것으로 선택했는데, 가장 안정적인 것 같습니다. 예 : 사용자가 기기에서 동일한 계정을 삭제했다가 다시 추가하면 내 앱에서 일치시킬 수 없으므로이 계정의 주소록에 다른 ID를 부여하지 않을 것입니다.
그러나 Gmail 동기화 어댑터는 아래에 설명 된 내용을 유지하는 것으로 보입니다. 불행하게도 Exchange 동기화 어댑터는 SOURCE_ID
으로 변경되지 않으며 23:4
과 같은 작은 숫자가 있으므로 서버 ID가 분명하지 않습니다.
질문 : 어떤 아이디어가이 문제를 극복 할 수 있습니까? 의도 한 용도로 오른쪽 ID
을 사용하고 있습니까? Exchange 어댑터가 다른 필드에 "영구 서버 ID"를 저장합니까?
문서 다음 SOURCE_ID
must be unique for each account type and should be stable across syncs :
- 고유 : 자체 소스 ID가 있어야합니다 계정에 대한 각 원료의 접촉. 이를 시행하지 않으면 연락처 응용 프로그램에 문제가 발생할 것입니다. 동일한 계정 유형 에 대한 원시 연락처 두 개가 동일한 소스 ID를 가질 수 있습니다. 예를 들어 [email protected] 계정의 원시 연락처 인 "Thomas Higginson"은 계정 [email protected]의 원시 연락처 인 "Thomas Higginson"과 동일한 출처의 ID를 가지고 있습니다 (예 : ).
- 안정적 : 원본 ID는 원시 연락처의 온라인 서비스 데이터에 영구적으로 포함됩니다. 예를 들어 사용자가 Apps 설정에서 연락처 저장소 을 지우고 다시 동기화하는 경우 복원 된 원시 주소록은 이전과 동일한 소스 ID가 이어야합니다. 이를 시행하지 않으면 바로 가기가 작동하지 않습니다.
자, 그럼, 제가'ID '에 의지한다면 시간이 지남에 따라 변해야한다고 제안해야합니다. 그렇다면이 ID가 아닌 경우 어떤 참조를 사용하면 더 영구적으로 사용할 수 있습니까? –
질문에 대한 답변은 다른 답변과 다릅니다. 당신이 사용해야하는 열쇠는'Contacts.LOOKUP_KEY'입니다. 일반적으로 조회 키는 많은 구성 요소에서 생성되는 복합 키입니다. 방금 내 대답을 편집했습니다 – Dibzmania