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



我在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();
        }

好的,我想通了。你只需要设置ContactsContract.Groups.TITLEContactsContract.Groups.ACCOUNT_NAMEContactsContract.Groups.ACCOUNT_TYPE,同步后,其他列会自动填充生成的数据。

相关内容

  • 没有找到相关文章

最新更新