如何在“本地”通讯录中创建联系人?

Posted

技术标签:

【中文标题】如何在“本地”通讯录中创建联系人?【英文标题】:How to create a contact in the "local" addressbook? 【发布时间】:2011-01-13 00:55:27 【问题描述】:

我想以编程方式在“本地”地址簿中创建一个联系人(这样它就不会尝试同步,这会导致一些与 Exchange 的兼容性问题)。

如果本地地址簿已经存在,我可以使用 ABAddressBookCopyArrayOfAllSources 找到它以获取地址簿中的所有源,然后查找 sourceTypeRef 为“kABSourceTypeLocal”的 ABRecordRef - 如果我随后将该 recordRef 传递给 ABPersonCreateInSource,我可以向本地目录添加一条记录。

如果还没有本地地址簿,是否有人对我应该如何最好地在“本地地址簿”中创建记录有任何建议?

(另外,在 ios4 之前我怎么能做到这一点,因为上面的调用当时不可用?)

谢谢

彼得

【问题讨论】:

嗨,我只是想确认一下......您是否希望能够将联系人保存到默认联系人应用程序? 不完全是,因为默认地址簿可能不是本地地址簿,我需要本地地址簿(或其他一些避免同步的方法,因为这会通过重新格式化电子邮件地址来杀死我的联系人记录)。如果我手动创建一个本地地址簿(即联系人组页面中的“在我的 iPhone 上”)并将联系人保存在那里,我的应用程序运行良好,但我想让这对用户透明。 ...另一方面,如果您的问题是“我是否希望将联系人保存到地址簿以便其他应用程序可以访问它(而不是私人应用程序)?”,那么答案应该是“是”。 【参考方案1】:

你应该看看这个帖子: Obtaining Specific ABSource from ABAddressBook in iOS 4+

演示如何在 ABAddressBook 中识别和定位特定来源 (ABSource)。虽然这段代码提到了函数 ABGroupCreateInSource(),但还有一个类似的函数 ABPersonCreateInSource() 用于处理人员。

【讨论】:

【参考方案2】:

我找到了一个简单的解决方法。 由于您在没有任何预先存在的本地联系人时无法查看/添加本地联系人,因此可以安全使用以下解决方法:

    假设您使用的是 Gmail (Exchange) 转到 Gmail 的邮件设置并禁用联系人同步 当系统提示您是要保留还是删除 Gmail 时 联系人,选择删除他们(别担心,他们 不会从 Gmail 中删除) 返回您的联系人。您现在可以创建一个本地联系人 最后,返回设置/邮件/Gmail 并重新启用 通讯录同步 瞧,您的 Gmail 联系人已回到您的手机中,现在您 有 1 个本地联系人,可让您访问本地联系人 除了 Gmail 联系人群组之外的群组。

希望有所帮助(我刚遇到同样的问题,发现这个解决方法对我很有用)。

本。

【讨论】:

嗨,是的,这确实有效,我已经向我的用户建议了这种方法,但是能够从代码中做到这一点会好得多。总有一定数量的用户会出错(您偶尔会收到差评,因为他们没有寻求任何帮助)

以上是关于如何在“本地”通讯录中创建联系人?的主要内容,如果未能解决你的问题,请参考以下文章

C++基础应用通讯录管理系统

如何在 WordPress 中创建联系表格?

黑马程序员 C++教程从0到1入门编程笔记2通讯录管理系统

Applescript for Contacts:如何仅处理来自本地联系人的地址并跳过来自 Facebook 的地址?

共享一个ID,删除本地通讯录后,另一台会自动删除吗?

iOS中获取本地通讯录联系人以及汉字首字母排序