我正在尝试通过我的应用程序使用新的 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/