0

Android 기기의 전화 번호부에 저장/동기화 된 모든 Google 연락처를 식별해야하는 요구 사항을 해결하고 있습니다. 그런 다음 각 연락처의 고유 연락처 ID (Google의 고유 연락처 ID)를 다른 기기 및 다른 플랫폼에서 동일하게 가져와야합니다.Android : ContactProvider 데이터베이스에서 Google 고유의 연락처 ID를 받으십시오.

RAW_CONTACT_ID에 관한 Android 개발자 문서를 읽었습니다. 또한 원시 연락처 ID를 얻으려고했지만 다른 장치에서 원시 연락처 ID의 값이 달라집니다.

나를 올바른 방향으로 안내 할 수 있다면 정말 도움이 될 것입니다.

자세한 정보가 필요하면 문의하십시오.

답변

0

ContactsContract.PhoneLookup

발신자 ID에 대한 예를 들어, 전화 번호를 찾는 결과를 나타내는 테이블을 사용해보십시오. 조회를 수행하려면 찾으려는 번호를 CONTENT_FILTER_URI에 추가해야합니다. 이 쿼리는 고도로 최적화되어 있습니다.

PhoneLookup._ID 

은 당신이 찾고있는 무엇

Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)); 
resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,... 

.

또한 this post에서 제공하는 솔루션을 시도 할 수 있습니다 : 안드로이드의 Contacts에서

public static int getContactIDFromNumber(String contactNumber,Context context) 
{ 
    contactNumber = Uri.encode(contactNumber); 
    int phoneContactID = new Random().nextInt(); 
    Cursor contactLookupCursor = context.getContentResolver().query(Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,contactNumber),new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID}, null, null, null); 
     while(contactLookupCursor.moveToNext()){ 
      phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID)); 
      } 
     contactLookupCursor.close(); 

    return phoneContactID; 
} 
0

모든 _ID 값을하는 지역, 그들은 일반적으로 증가하고, 는 장치간에 동기화되지 있습니다.

앱의 SyncAdapter (이 경우 Google의 SyncAdapter)에 의해 동기화 될 수있는 값은 SYNC1, SYNC2, SYNC3, SYNC4입니다.

그러나이 필드는 아무 것도 수행하지 않을 수 있으며 어떤 용도로든 사용할 수 있습니다. 일반적으로 그 중 하나는 인쇄 할 필요가있는 "서버 식별자"로 사용되며, 어떤 것을 수동으로 확인하십시오.