我正在制定一项要求,我需要识别所有与Android设备的电话簿保存/同步的Google联系人。然后,我必须获取每个联系人的唯一联系人ID(Google的唯一联系人ID),这在其他设备和其他平台上将是相同的。
我已阅读有关RAW_CONTACT_ID的Android开发人员文档。此外,尝试获取原始联系人ID,但我在其他设备上获得了原始联系人ID的不同值。
如果有人能让我朝着正确的方向前进,那将会非常有帮助。
如果需要更多信息,请询问。
答案 0 :(得分:0)
尝试使用ContactsContract.PhoneLookup
表示查找电话号码的结果的表格,例如来电者ID。要执行查找,您必须将要查找的数字附加到CONTENT_FILTER_URI。此查询已高度优化。
Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,...
其中
PhoneLookup._ID
是您正在寻找的。 p>
您也可以尝试this post中提供的解决方案:
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;
}
答案 1 :(得分:0)
Android _ID
中的所有Contacts
值都是本地的,它们通常是递增的,并且不在设备之间同步。
应用程序SyncAdapter
(在本例中为Google的SyncAdapter)可能会同步的值为SO post 2。
但请注意,这些字段不保证可以执行任何操作,SyncAdapter
可以将它们用于所需的任何目的,通常,其中一个用作"服务器标识符"你只需要打印它们,并手动检查哪一个。