如何在“本地”通讯录中创建联系人?
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 联系人群组之外的群组。
希望有所帮助(我刚遇到同样的问题,发现这个解决方法对我很有用)。
本。
【讨论】:
嗨,是的,这确实有效,我已经向我的用户建议了这种方法,但是能够从代码中做到这一点会好得多。总有一定数量的用户会出错(您偶尔会收到差评,因为他们没有寻求任何帮助)以上是关于如何在“本地”通讯录中创建联系人?的主要内容,如果未能解决你的问题,请参考以下文章