如何在本地联系人应用程序中让自定义帐户像 Google/LinkedIn/Facebook 一样显示?

Posted

技术标签:

【中文标题】如何在本地联系人应用程序中让自定义帐户像 Google/LinkedIn/Facebook 一样显示?【英文标题】:How to make a custom account show up like Google/LinkedIn/Facebook in the native Contacts app? 【发布时间】:2013-02-21 01:35:11 【问题描述】:

我目前正在开发一个应用程序,我们将从我们自己的应用程序中添加联系人,类似于 LinkedIn 的连接方式和 Facebook 的好友方式。因此,我们需要我们的自定义帐户,如下图所示(如“MyAppName”)以及从我们的应用程序中添加的联系人:

我们目前有一个SyncAdapter,如第一张图片所示,只是希望它显示在联系人应用程序中。我们一直在查看文档,但找不到任何具体的内容。

这不是关于添加联系人,而是让帐户显示在“帐户”下的联系人应用程序中。

【问题讨论】:

联系人数据独立于客户经理和同步适配器。您必须调用系统 ContentProviders 来添加您的自定义数据:***.com/questions/2733589/… 此处为 developer.android.com/guide/topics/providers/… 通读了您链接的材料,我认为第一个线程没有答案,我可以看到它是关于添加自定义数据字段的,我已经这样做了,所以它不是真的我在找。然而,第二个链接让我看一下 ContactsContract.Groups 等,但它们仍然是组,而不是像我感兴趣的那样的帐户。如果您有任何可能有帮助的更多信息,我将非常感激。 嗨,第一个线程只是对实际实现的快速浏览。第二个,就是这样,我向你保证。一个联系人有 N 个帐户(称为 RawContact),每个 rawContact 都有一堆属性,如电子邮件地址、电话号码、状态等。这些数据是联系人应用程序中显示的内容。在该链接上,Contacts Provider Sync Adapters 也有一个特定的标题,开头是:“联系人提供程序是专门为处理设备和在线服务之间的联系人数据同步而设计的。” 我已经将用户绑定到我的“MyAppName”帐户,他们显示为“MyAppName”联系人,但“帐户”下没有“MyAppName”帐户。我错过了什么,或者还有更多的东西吗? 【参考方案1】:

在研究了 Budius 的建议后,我终于想出了如何去做。 Here 是指向文档中所述位置的更精确链接。基本上你只需要让你的帐户可见。除此之外,我找到了关于如何做到这一点的答案here。

ContentProviderClient client = getContentResolver().acquireContentProviderClient(ContactsContract.AUTHORITY_URI);
ContentValues values = new ContentValues();
values.put(ContactsContract.Groups.ACCOUNT_NAME, account.name);
values.put(Groups.ACCOUNT_TYPE, account.type);
values.put(Settings.UNGROUPED_VISIBLE, true);
try

   client.insert(Settings.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(), values);

catch (RemoteException e)

   e.printStackTrace();

此代码的所有功劳归于Henry Pushel。

【讨论】:

Android联系人自定义账号图标中的item点击如何处理?

以上是关于如何在本地联系人应用程序中让自定义帐户像 Google/LinkedIn/Facebook 一样显示?的主要内容,如果未能解决你的问题,请参考以下文章

无法让自定义 url 方案在 iOS 中工作

如何以编程方式在android中添加自定义帐户?

c#中让Windows窗体只运行一次,并在第二次启动窗体时激活该窗体

如何像应用程序一样创建联系人列表

如何让自定义 UIControl 作为推送操作参与 segue?

在clojure中让vs def