android - 使用新 API 添加联系人时出现问题

标签 android new-operator contacts

我正在尝试通过我的应用程序使用新的 ContactContract API 将新联系人添加到我的联系人列表中。我有以下基于 android dev 上的 Contact Manager 示例的方法。

    private static void addContactCore(Context context, String accountType, String accountName, String name, String phoneNumber, int phoneType) throws RemoteException, OperationApplicationException {

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

    //Add contact type
    ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
            .build());

    //Add contact name
    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.DISPLAY_NAME, (!name.toLowerCase().equals("unavailable") && !name.equals("")) ? name : phoneNumber)
            .build());

    //Add phone number
    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, phoneNumber)
            .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType)
            .build());

    //Add contact
    context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}

在一个例子中,我有参数的流动值。 帐户类型:com.google 帐户名:(我的谷歌帐户电子邮件) 姓名:迈克 电话号码:5555555555 电话类型:3

对该函数的调用正常返回,没有任何异常被抛出,但是在我手机上的联系人管理器中找不到联系人。我的手机上也没有与该信息的联系方式。有没有人知道我可能做错了什么?

最佳答案

您需要更改显示选项以显示与特定帐户关联的联系人。

关于android - 使用新 API 添加联系人时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926298/

相关文章:

c# - 使用 new 初始化 c# 数组与使用文字初始化

c++ - 删除双指针(矩阵)

macos - 沙盒日历应用程序想要访问联系人?

ios - Cordova Contact Picker 插件调用

android - NullPointerException android ListView

android - 如何使用 adb shell 命令将所有应用程序流量重定向到代理服务器?

android - 检查 android 设备中可用的移动网络数据

c++ - 如果不使用 delete,是否会在函数结束时释放内存?

android - 无法使用 ContentProviderOperation 删除整个联系人

Android:Volley: 为什么 volley imageLoader 必须从主线程调用?