Android 以编程方式向新联系人添加组织和组织标题
我正在尝试使用contacts API添加联系人信息,其中包括用户组织及其职务 我使用以下代码来执行插入Android 以编程方式向新联系人添加组织和组织标题,android,android-contacts,Android,Android Contacts,我正在尝试使用contacts API添加联系人信息,其中包括用户组织及其职务 我使用以下代码来执行插入 String contactName = xmlProcessor.getSingleParameterValue("ContactName"); if (xmlProcessor.doesSingleElementExist("CompanyName")) { company = xmlProcessor.getSinglePar
String contactName = xmlProcessor.getSingleParameterValue("ContactName");
if (xmlProcessor.doesSingleElementExist("CompanyName")) {
company = xmlProcessor.getSingleParameterValue("CompanyName");
}
if (xmlProcessor.doesSingleElementExist("CompanyTitle")) {
companyTitle = xmlProcessor.getSingleParameterValue("CompanyTitle");
}
String phoneNumber = xmlProcessor.getSingleParameterValue("PhoneNumber");
ContactInformation.PhoneNumberType phoneNumberType = ContactInformation.PhoneNumberType.valueOf(xmlProcessor.getSingleParameterValue("PhoneNumberType"));
String email = xmlProcessor.getSingleParameterValue("Email");
ContactInformation.EmailType emailType = ContactInformation.EmailType.valueOf(xmlProcessor.getSingleParameterValue("EmailType"));
String address = xmlProcessor.getSingleParameterValue("Address");
ContactInformation.AddressType addressType = ContactInformation.AddressType.valueOf(xmlProcessor.getSingleParameterValue("AddressType"));
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
int rawContactID = ops.size();
//Create the Raw ID
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
// Adding insert operation to operations list
// to insert display name in the table ContactsContract.Data
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, contactName)
.build());
if (company != null) {
//Adding insert operation to operations list
//to insert organisation name
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company)
.build());
}
if (companyTitle != null) {
//Adding insert operation to operations list
//to inset organisation title
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Organization.JOB_DESCRIPTION, companyTitle)
.build());
}
// Adding insert operation to operations list
// to insert Mobile Number in the table ContactsContract.Data
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, getPhoneTypeInteger(phoneNumberType))
.build());
if (!email.equals("")) {
// Adding insert operation to operations list
// to insert Email
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email)
.withValue(ContactsContract.CommonDataKinds.Email.TYPE, getEmailTypeInteger(emailType))
.build());
}
if (!address.equals(""))
{
//Insert the address
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactID)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, address)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, getAddressTypeInteger(addressType))
.build());
}
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
String contactName=xmlProcessor.getSingleParameterValue(“contactName”);
if(xmlProcessor.doesSingleElementExist(“CompanyName”)){
company=xmlProcessor.getSingleParameterValue(“CompanyName”);
}
if(xmlProcessor.doesSingleElementExist(“CompanyTitle”)){
companyTitle=xmlProcessor.getSingleParameterValue(“companyTitle”);
}
字符串phoneNumber=xmlProcessor.getSingleParameterValue(“phoneNumber”);
ContactInformation.PhoneNumberType PhoneNumberType=ContactInformation.PhoneNumberType.valueOf(xmlProcessor.getSingleParameterValue(“PhoneNumberType”);
字符串email=xmlProcessor.getSingleParameterValue(“email”);
ContactInformation.EmailType EmailType=ContactInformation.EmailType.valueOf(xmlProcessor.getSingleParameterValue(“EmailType”);
字符串地址=xmlProcessor.getSingleParameterValue(“地址”);
ContactInformation.AddressType AddressType=ContactInformation.AddressType.valueOf(xmlProcessor.getSingleParameterValue(“AddressType”));
ArrayList ops=新的ArrayList();
int rawContactID=ops.size();
//创建原始ID
添加(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT\u URI)
.withValue(contacts contract.raw contacts.ACCOUNT_TYPE,null)
.withValue(contacts contract.raw contacts.ACCOUNT\u NAME,null)
.build());
//将插入操作添加到操作列表
//在表contacts contract.Data中插入显示名称
添加(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\uURI)
.带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID,RAW contactId)
.withValue(contacts contract.Data.MIMETYPE、contacts contract.commonDataTypes.StructuredName.CONTENT\u ITEM\u TYPE)
.withValue(ContactsContact.CommonDataTypes.StructuredName.DISPLAY\u NAME,contactName)
.build());
如果(公司!=null){
//将插入操作添加到操作列表
//插入机构名称
添加(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\uURI)
.带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID,RAW contactId)
.withValue(contacts contract.Data.MIMETYPE、contacts contract.commondatatypes.Organization.CONTENT\u ITEM\u TYPE)
.withValue(contacts contract.commonDataTypes.Organization.COMPANY,COMPANY)
.build());
}
if(companyTitle!=null){
//将插入操作添加到操作列表
//插入组织名称
添加(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\uURI)
.带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID,RAW contactId)
.withValue(contacts contract.Data.MIMETYPE、contacts contract.commondatatypes.Organization.CONTENT\u ITEM\u TYPE)
.带值(contacts contract.commondatatypes.Organization.JOB_DESCRIPTION,companyTitle)
.build());
}
//将插入操作添加到操作列表
//在表contacts contract.Data中插入手机号码
添加(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\uURI)
.带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID,RAW contactId)
.withValue(contacts contract.Data.MIMETYPE、contacts contract.commondatatypes.Phone.CONTENT\u ITEM\u TYPE)
.withValue(contacts contract.commonDataTypes.Phone.NUMBER,phoneNumber)
.withValue(ContactsContact.CommonDataTypes.Phone.TYPE,getPhoneTypeInteger(phoneNumberType))
.build());
如果(!email.equals(“”){
//将插入操作添加到操作列表
//插入电子邮件
添加(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\uURI)
.带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID,RAW contactId)
.withValue(contacts contract.Data.MIMETYPE、contacts contract.commondatatypes.Email.CONTENT\u ITEM\u TYPE)
.withValue(contacts contract.commondatatypes.Email.ADDRESS,Email)
.withValue(ContactsContract.CommonDataTypes.Email.TYPE,getEmailTypeInteger(emailType))
.build());
}
如果(!address.equals(“”)
{
//插入地址
添加(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT\uURI)
.带ValueBackReference(contacts contract.Data.RAW\u CONTACT\u ID,RAW contactId)
.withValue(contacts contract.Data.MIMETYPE、contacts contract.commondatatypes.Email.CONTENT\u ITEM\u TYPE)
.withValue(ContactsContact.CommonDataTypes.StructuredPostal.FORMATTED_地址,地址)
.withValue(ContactsContract.CommonDataTypes.StructuredPostal.TYPE,getAddressTypeInteger(addressType))
.build());
}
context.getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
插入的内容基本正常,组织名称似乎正常,但职位名称似乎不正确。我使用过Organization.JOB_描述和Organization.TITLE
当我手动添加公司名为a的联系人时
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, "Abc Corp")
.withValue(ContactsContract.CommonDataKinds.Organization.TITLE, "Developer")
.build());