如何以编程方式使用同步适配器添加联系人组(标签)?

时间:2018-04-19 15:32:06

标签: android android-contentprovider

我在向ContentProvider帐户添加自定义组(标签)时遇到问题。 我正在创建新操作(ContentProviderOperation.newInsert()),它会添加带有给定标题的新标签,但我需要为同步适配器生成ContactsContract.Groups.SOURCE_IDContactsContract.Groups.SYNC2ContactsContract.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();
        }

1 个答案:

答案 0 :(得分:0)

好的,我明白了。您只需设置ContactsContract.Groups.TITLEContactsContract.Groups.ACCOUNT_NAMEContactsContract.Groups.ACCOUNT_TYPE,同步后,其他列将自动填充生成的数据。