Android 如何在本机联系人应用程序中显示自定义帐户,如Google/LinkedIn/Facebook?

Android 如何在本机联系人应用程序中显示自定义帐户,如Google/LinkedIn/Facebook?,android,android-contacts,accountmanager,android-syncadapter,Android,Android Contacts,Accountmanager,Android Syncadapter,我目前正在开发一个应用程序,我们将从我们自己的应用程序中添加联系人,类似于LinkedIn有连接,Facebook有朋友。因此,我们需要我们的自定义帐户,该帐户在下图中显示为MyAppName,并从我们的应用程序中添加联系人: 我们目前有一个SyncAdapter,如第一张图片所示,我们希望它能显示在Contacts应用程序中。我们一直在查看文档,但找不到与此相关的任何内容 这不是关于添加联系人,而是让帐户显示在“联系人”应用程序的“帐户”下。在研究了Budius的建议后,我终于找到了方法。

我目前正在开发一个应用程序,我们将从我们自己的应用程序中添加联系人,类似于LinkedIn有连接,Facebook有朋友。因此,我们需要我们的自定义帐户,该帐户在下图中显示为MyAppName,并从我们的应用程序中添加联系人:

我们目前有一个SyncAdapter,如第一张图片所示,我们希望它能显示在Contacts应用程序中。我们一直在查看文档,但找不到与此相关的任何内容


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

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


这段代码的所有功劳都归我所有。

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


此代码的所有功劳归于。

联系人数据与accountmanager和同步适配器分开。你必须调用系统ContentProviders来添加你的自定义数据:在这里,通过阅读你链接的材料,我认为第一个线程没有答案,我可以看到它是关于添加自定义数据字段的,我已经这样做了,所以这不是我真正想要的。然而,第二个链接让我看看ContactsContract.Groups之类的,但它们仍然是群组,而不是我感兴趣的帐户。如果您有更多有用的信息,我将不胜感激。您好,第一个线程只是简单介绍一下实际实现。第二,就是这样,我向你保证。一个联系人有N个名为RawContact的帐户,每个RawContact都有一组属性,如电子邮件地址、电话号码、状态等。这些数据显示在contact应用程序中。在该链接上还有一个特定的联系人提供商同步适配器标题,开头是:联系人提供商专门用于处理设备和在线服务之间的联系人数据同步。我已经将用户绑定到我的MyAppName帐户,他们显示为MyAppName联系人,但帐户下却没有MyAppName帐户。我是否遗漏了什么,或者还有更多的遗漏?联系人数据与accountmanager和同步适配器是分开的。你必须调用系统ContentProviders来添加你的自定义数据:在这里,通过阅读你链接的材料,我认为第一个线程没有答案,我可以看到它是关于添加自定义数据字段的,我已经这样做了,所以这不是我真正想要的。然而,第二个链接让我看看ContactsContract.Groups之类的,但它们仍然是群组,而不是我感兴趣的帐户。如果您有更多有用的信息,我将不胜感激。您好,第一个线程只是简单介绍一下实际实现。第二,就是这样,我向你保证。一个联系人有N个名为RawContact的帐户,每个RawContact都有一组属性,如电子邮件地址、电话号码、状态等。这些数据显示在contact应用程序中。在该链接上还有一个特定的联系人提供商同步适配器标题,开头是:联系人提供商专门用于处理设备和在线服务之间的联系人数据同步。我已经将用户绑定到我的MyAppName帐户,他们显示为MyAppName联系人,但帐户下却没有MyAppName帐户。我是否遗漏了什么,或者还有更多?如何处理Android联系人自定义帐户图标中的项目点击?如何处理Android联系人自定义帐户图标中的项目点击?
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();
}