【问题标题】:Picking the correct rawContactID when adding a new number to existing contact向现有联系人添加新号码时选择正确的 rawContactID
【发布时间】:2012-11-15 13:20:35
【问题描述】:

我正在构建一个自定义电话簿应用程序。作为其中的一部分,我需要在现有联系人下添加新联系人或其他信息(电话号码或电子邮件)。虽然这在简单的测试用例下效果很好,但在某些情况下(何时不明显)我最终会遇到两个问题:

  1. 会创建多个联系人副本,通常是数百个!这些都是空白的,只是与修改后的原始联系人共享相同的显示名称

  2. 联系人下有多个号码(完全相同)。真正不寻常的是,这些数字在contactContracts.Data 表中具有相同的_ID,因此无法理解如何存在多个具有相同唯一ID 的实例。我检查了是否是显示问题,但似乎不是

以上两项都让我怀疑我是否正确插入信息。所以我想知道的是:

  1. 创建新联系人时,是否应该指定默认的 account_name 和 account_type?我目前对两者都使用 null

  2. 当我向现有联系人添加新电话号码时,将数据插入到 contactContracts.Data 表中的正确方法是什么?我目前正在使用 rawContactID 作为参考 ID 插入此号码,并且通过使用我的联系人的 contactID 作为参考,我从 contactContracts.RawContacts 表中获取此 rawContactID。请注意,因为我经常得到多个原始联系人,所以我最终会选择最后一个(任意选择)来插入电话号码。

【问题讨论】:

    标签: android api android-contacts contactscontract rawcontactid


    【解决方案1】:

    您可以使用 AccountManager 类获取帐户名称和帐户类型信息。

        final AccountManager accountTypes = AccountManager.get(getApplicationContext());
        final Account accounts[] = accountTypes.getAccounts();
        for (final Account account: accounts) {
            Log.i(TAG, account.name);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-07
      • 2018-01-09
      • 2018-01-26
      • 2014-10-05
      相关资源
      最近更新 更多