我正在构建自定义电话簿应用程序。作为其中一部分,我需要在现有联系人下添加新联系人或其他信息(电话号码或电子邮件)。虽然这在简单的测试用例下运行良好,但在某些情况下(并不是很明显)我最终会遇到两个问题:
创建了一个联系人的多个副本,通常是数百个!这些都是空白的,只是与修改后的原始联系人共享相同的显示名称
联系人下的多个号码(完全相同)。非常不寻常的是这些数字在contactContracts.Data表中具有相同的_ID,因此无法理解如何使用相同的唯一ID来存在多个实例。我检查了它是否是显示问题,但似乎不是
如果我正确插入信息,上述两个都让我有疑问。所以我想知道的是:
创建新联系人时,是否应该指定默认的account_name和account_type?我目前正在使用null
当我向现有联系人添加新电话号码时,将数据插入contactContracts.Data表的正确方法是什么?我目前正在使用rawContactID作为引用ID插入此数字,我从contactContracts.RawContacts表中获取此rawContactID,方法是使用我的联系人的contactID作为参考。请注意,因为我经常会收到多个原始联系人,所以我最终会选择最后一个(任意选择)来填写我的电话号码。
答案 0 :(得分:2)
您可以使用AccountManager类获取帐户名称和帐户类型信息。
final AccountManager accountTypes = AccountManager.get(getApplicationContext());
final Account accounts[] = accountTypes.getAccounts();
for (final Account account: accounts) {
Log.i(TAG, account.name);
}