1

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

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

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

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

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

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

4

1 回答 1

2

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

    final AccountManager accountTypes = AccountManager.get(getApplicationContext());
    final Account accounts[] = accountTypes.getAccounts();
    for (final Account account: accounts) {
        Log.i(TAG, account.name);
    }
于 2012-11-18T04:20:38.567 回答