繁体   English   中英

Android通过应用提供/同步联系人

[英]Android provide/sync contacts from app

我想保存联系人并将其与手机通讯录同步。 从我的应用程序保存的联系人应出现在某些同步帐户下。 如果该应用已卸载,则应删除所有这些联系人。

阅读Android文档后,我创建了SyncAdapter和ContentProvider。 这两个现在唯一要做的就是创建一个帐户。 我的ContentProvider仍然是虚拟的。

Android联系人帐户

我要做的第一件事是使用自己的同步帐户手动保存联系人。 我在SO上找到的以下代码仅创建电话联系人,而没有指向我的同步帐户的任何链接。

public static boolean insertContact(ContentResolver contactAdder,
        String firstName, String mobileNumber) {
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.RawContacts.CONTENT_URI)
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
            .build());
    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(
                    ContactsContract.Data.MIMETYPE,
                    ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
            .withValue(
                    ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
                    firstName).build());
    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.Data.CONTENT_URI)
            .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
            .withValue(
                    ContactsContract.Data.MIMETYPE,
                    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER,
                    mobileNumber)
            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
                    Phone.TYPE_MOBILE).build());

    try {
            contactAdder.applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        return false;
    }

    return true;
}

如何将应用程序中的联系人保存在我自己的同步帐户下,以便您可以在“联系人”列表中看到我的应用程序徽标?

在互联网上很难找到有关它的一些信息。 大多数结果与交换/修改现有联系人有关。

我已成功将联系人保存在同步帐户下!

我好近 只是在插入时给出了帐户类型和名称:

    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.RawContacts.CONTENT_URI)
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, MY_ACCOUNT_TYPE)
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, MY_ACCOUNT_NAME)
            .build());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM