客户经理。联系人的帐户类型

时间:2018-09-25 11:21:56

标签: android contactscontract accountmanager

好,所以我有“完全”功能的帐户应用程序。除了一件事。

我的应用程序从SQlite DB中获取数据并通过ContactContract创建具有帐户名和类型的帐户,如

contactsOperations.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
                    .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, static_variables.ACCOUNT_TYPE)
                    .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, static_variables.ACCOUNT_NAME)
                    .withYieldAllowed(true)
                    .build());

在某些电话上,标准联系人应用程序中的几乎所有(和模拟器)我都看到已创建帐户,并且帐户位置已按预期设置为static_variables.ACCOUNT_NAME

但是在某些设备上,该位置是“未知”(已创建并存在该帐户),并且在某些联系人上根本不可见,但存在。

何时(在任何电话上)我用

进行检查
Cursor cursor_raw = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null, null);

我最后看到的那些联系人的帐户名和类型设置正确。

1。这是第一个问题,怎么了?

第二个不是问题,而是另一个证据。当我进入“系统”->“帐户”->“添加帐户”时,我在那里看到我的帐户类型,可以创建它。

但是当我在标准联系人应用程序中并按添加联系人时,我看到“ Google”,“ Exchange”,“ SIM”,还有更多,但不是我的。 同样在standartd应用程序中,当我选择“打开帐户设置”(位于自动同步所在的位置)时,会看到相同的帐户“ Google”,“ Exchange”,“ SIM”,还有更多但不是我的。

第二次
2。什么Account / ContentProvider /或其他错误。我没有添加帐户中的哪些选项,因此并非在所有地方都可见该帐户?

1 个答案:

答案 0 :(得分:0)

简而言之。未完全配置SyncAdapter。如果您不想更改我们的contentAuthority,而不仅仅是创建一个具有不同contentAuthority的同步适配器。

用于解决问题的链接。

Display custom sync adapter as an option when adding contacts

How to add my application's account to the Android Contacts application's "Accounts" list?

https://android.googlesource.com/platform/packages/apps/Contacts/+/android-sdk-support_r11/tests/res/xml