Android Method for Adding Contacts to Address Book

  • 2021-12-13 09:20:17
  • OfStack

Directory field Contact name
Contact nickname contact avatar
Contact Remarks Contact Number
How to add contact company and position website contact mailbox contact address 1. Add silently
2. Jump Add
3. Add to an existing contact
Authority

Field

Contact name

I don't know why the name is set, but I passed it after the value is set, so I passed it alone once at last through Intent


//  Contact name 
ContentValues row1 = new ContentValues();String name = lastName + middleName + firstName;row1.put(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);row1.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 
name);row1.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, 
firstName);row1.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, 
lastName);row1.put(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME, 
middleName);

Contact nickname


ContentValues row2 = new ContentValues();
row2.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE);
row2.put(ContactsContract.CommonDataKinds.Nickname.NAME, nickName);

Contact avatar

Here you need to pass in the byte array of the picture


ContentValues row3 = new ContentValues();
// Add an avatar 
row3.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
Bitmap bitmap = BitmapFactory.decodeFile(photoFilePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
row3.put(ContactsContract.CommonDataKinds.Photo.PHOTO, baos.toByteArray());

Contact comments


//  Contact comments 
ContentValues row4 = new ContentValues();
row4.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE);
row4.put(ContactsContract.CommonDataKinds.Note.NOTE, remark);

Contact number

There are many types of numbers, such as telephone, mobile phone, fax, company, home, etc.


ContentValues row5 = new ContentValues();
//  Telephone number of contact person 
addPhoneNumber(row5, values, mobilePhoneNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);ContentValues row6 = new ContentValues();
//  Company phone number of contact person 
addPhoneNumber(row6, values, hostNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MAIN);ContentValues row7 = new ContentValues();
//  Work number of contact person 
addPhoneNumber(row7, values, workPhoneNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE);ContentValues row8 = new ContentValues();
//  Work fax of contact person 
addPhoneNumber(row8, values, workFaxNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK);ContentValues row9 = new ContentValues();
//  Residential Number of Contact 
addPhoneNumber(row9, values, homePhoneNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_HOME);ContentValues row10 = new ContentValues();
//  Contact's home fax 
addPhoneNumber(row10, values, homeFaxNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME);

// Method of adding encapsulation 
private void addPhoneNumber(
    ContentValues row, ArrayList<ContentValues> values, String phoneNumber, int type) {    
    row.put(ContactsContract.Data.MIMETYPE, 
    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);    
    row.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber);    
    row.put(ContactsContract.CommonDataKinds.Phone.TYPE, type);    
    values.add(row);
}

Contact Company and Position


//  Contact Company and Position 
ContentValues row11 = new ContentValues();
row11.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
row11.put(ContactsContract.CommonDataKinds.Organization.COMPANY, organization);
row11.put(ContactsContract.CommonDataKinds.Organization.TITLE, title);

Website


//  Contact website 
ContentValues row12 = new ContentValues();
row12.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE);
row12.put(ContactsContract.CommonDataKinds.Website.URL, url);

Contact mailbox


//  Insert Email Data 
ContentValues row13 = new ContentValues();
row13.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
row13.put(ContactsContract.CommonDataKinds.Email.DATA, email);
row13.put(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK);

Contact Address

Address is divided into home, work and others. There is a problem, after the segment is passed in, it can't be displayed. You can only splice the streets of the country, provinces and cities and pass them into the address field, so it can be displayed, but the zip code can't be displayed


// Other addresses 
ContentValues row14 = new ContentValues();
addAddress(row14, values, addressCountry, addressState, addressCity, addressStreet, addressPostalCode, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_OTHER);
// Home address 
ContentValues row15 = new ContentValues();
addAddress(row15, values, homeAddressCountry, homeAddressState, homeAddressCity, homeAddressStreet, homeAddressPostalCode, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME);
// Work address 
ContentValues row16 = new ContentValues();
addAddress(row16, values, workAddressCountry, workAddressState, workAddressCity, workAddressStreet, workAddressPostalCode, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK);

// Add address method 
private void addAddress(ContentValues row, ArrayList<ContentValues> values, String country, String region, String city, String street, String addressPostalCode, int type) {
    row.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, country + region + city + street);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, country);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.REGION, region);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.CITY, city);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.STREET, street);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, addressPostalCode);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, type);
    values.add(row);
}

Adding method

There are three ways to add it. One is to add it silently and store it directly in the database, and the other two are to jump, add it directly or add it to the existing contact

1. Add silently

Take adding a name as an example and insert it directly into the database


//  Toward RawContacts.CONTENT_URI Null value insertion, 
//  Get first Android Returned by the system rawContactId
//  Later, based on this id Insert value 
Uri rawContactUri = mActivity.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
//  Content type 
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
//  Contact name 
values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, firstName);
values.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, lastName);
values.put(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME, middleName);
//  To contacts URI Add a contact name 
mActivity.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

2. Jump Add

Add all row above to the array, 1 pass


ContentValues row2 = new ContentValues();
row2.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE);
row2.put(ContactsContract.CommonDataKinds.Nickname.NAME, nickName);
0

3. Add to an existing contact

Add all the above row to the array, pass it once, and select a contact after jumping


ContentValues row2 = new ContentValues();
row2.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE);
row2.put(ContactsContract.CommonDataKinds.Nickname.NAME, nickName);
1

Authority

You can't forget the permissions, otherwise you will flash back and report errors, which are the read and write permissions of contacts respectively


ContentValues row2 = new ContentValues();
row2.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE);
row2.put(ContactsContract.CommonDataKinds.Nickname.NAME, nickName);
2

So far, the summary is relatively detailed, and there are supplementary comments.

The above is Android to add contacts to the address book of the details of the method, more about Android to add contacts to the address book information please pay attention to the site of other related articles!


Related articles: