我在ContentProvider
中添加自定义组(标签(到帐户时遇到问题。我正在创建新操作(ContentProviderOperation.newInsert()
(,它添加了具有给定标题的新标签,但我需要为同步适配器生成ContactsContract.Groups.SOURCE_ID
和ContactsContract.Groups.SYNC2
、ContactsContract.Groups.SYNC3
字段。我找不到有关如何从帐户获取现有同步适配器以及如何生成ContactsContract.Groups.SOURCE_ID
(如果需要(的信息。也许我需要创建新的同步适配器?
这是我当前的代码
ArrayList<ContentProviderOperation> ops =
new ArrayList<>();
AccountManager accountManager = AccountManager.get(MainActivity.this);
Account[] accounts = accountManager.getAccounts();
for (int i = 0; i < accounts.length; i++) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Groups.CONTENT_URI)
.withValue(ContactsContract.Groups.TITLE, title)
.withValue(ContactsContract.Groups.ACCOUNT_NAME, accounts[i].name)
.withValue(ContactsContract.Groups.ACCOUNT_TYPE, accounts[i].type)
.build()
);
}
try {
ContentProviderResult[] results = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}
好的,我想通了。你只需要设置ContactsContract.Groups.TITLE
、ContactsContract.Groups.ACCOUNT_NAME
、ContactsContract.Groups.ACCOUNT_TYPE
,同步后,其他列会自动填充生成的数据。