好的,所以我有"功能齐全"的帐户应用程序。除了一件事。
我的应用程序从 SQlite DB 获取数据,并通过联系人合同创建帐户,并指定帐户名称和类型,例如
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.这是第一个问题,怎么了?
第二个不是问题,而是以前的一个证据。当我转到系统>帐户>添加帐户时,我在那里看到我的帐户类型,我可以创建它。
但是当我在标准联系人应用程序中按添加联系人时,我看到"谷歌","交换","SIM"和更多,但不是我的。 同样在标准应用程序中,当我选择"打开帐户设置"(自动同步所在的位置(时,我看到相同的帐户"Google","Exchange","SIM"等更多帐户,但不是我的。
所以第二个
2.什么帐户/内容提供商/或其他东西出了问题。我不会添加帐户中的哪些选项,因此帐户并非在所有位置都可见?
简而言之。未完全配置同步适配器。如果您不想更改我们的内容权限,而不仅仅是创建一个具有不同内容权限的同步适配器。
用于解决问题的链接。
添加联系人时将自定义同步适配器显示为选项
如何将我的应用程序的帐户添加到Android联系人应用程序的"帐户"列表中?
https://android.googlesource.com/platform/packages/apps/Contacts/+/android-sdk-support_r11/tests/res/xml