【问题标题】:How to get the ID of the contact on Windows Phone contact list?如何获取 Windows Phone 联系人列表中的联系人 ID?
【发布时间】:2011-10-13 06:45:09
【问题描述】:

我想获取联系人列表应用程序的 ID...目前我正在使用名为 PhoneNumberChooserTask 的类,例如选择器类,但我只得到数字、姓名、全名。等等...但是如何获取该联系人的 ID?

【问题讨论】:

  • 不确定您指的是什么。你能展示你的代码吗?
  • Id 属性确实存在,但它是内部的,无法通过反射获得它的值(你会得到 PropertyAccessException)。

标签: c# windows-phone-7 contact rawcontactid


【解决方案1】:

是的,有可能,

Contact c = new Contact();
var Id = c.GetHashCode(); //gives the Id property value.

【讨论】:

  • 否 - 不保证 GetHashCode() 在每次执行之间(或在 .NET 框架版本之间)返回相同的值! - 不要使用它来唯一标识联系人,因为它不保证工作!
  • 此外,如果您更改联系人的任何属性,哈希码也会更改 - 如果您将其用作 UID,则数据库中通过此 UID 引用特定联系人的每条记录在更改时都会出错,并且数据将被孤立。
  • 嗨史蒂夫,我不确定你说这句话的依据是什么。但是如果您对 Contact 类进行去混淆处理,您可以看到 GetHashCode 方法将返回 ContactId。只有当 windows pohne 重新生成其电话数据库时,你才能在某种意义上是正确的,因为用户对 google 联系人/windows live 联系人进行了某些操作。
【解决方案2】:

您没有任何可使用的 ID,因此作为开发人员,您根本无法使用它。 (这意味着它不可能。)

【讨论】:

  • 很伤心,我不明白为什么 Id 属性是内部的而不是公共的。
  • 什么意思我跟ID没关系?!我需要它将人与另一个实体相关联。
【解决方案3】:

According to this answerGetHashCode 返回联系人的私有属性 ID。我已经确认在运行 Windows Phone 8.1 的 3 台设备(Lumia 620、Lumia 1320、Lumia 925)中它似乎可以工作。我更改了联系人详细信息,但 ID 保持不变。

Uniquely identifying contacts in a Windows Phone Address Book

【讨论】:

    【解决方案4】:

    对于 Windows Phone 8.1 RT,您只需使用 contact Id property。不再需要 GetHashCode()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多