我在向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();
}
答案 0 :(得分:0)
好的,我明白了。您只需设置ContactsContract.Groups.TITLE
,ContactsContract.Groups.ACCOUNT_NAME
,ContactsContract.Groups.ACCOUNT_TYPE
,同步后,其他列将自动填充生成的数据。