/**
* @brief 新建联系人显示编辑界面
* */
public void insertContact(Contact contact,Context context) {
if (context == null) {
return;
}
Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, contact.getName());
intent.putExtra(ContactsContract.Intents.Insert.PHONE, contact.getNumber());
intent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK);
intent.putExtra(ContactsContract.Intents.Insert.SECONDARY_PHONE, contact.getFax());
intent.putExtra(ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK);
intent.putExtra(ContactsContract.Intents.Insert.EMAIL, contact.getEmail());
intent.putExtra(ContactsContract.Intents.Insert.EMAIL_TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK);
intent.putExtra(ContactsContract.Intents.Insert.POSTAL, contact.getAddress());
intent.putExtra(ContactsContract.Intents.Insert.POSTAL_TYPE, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK);
// Insert中没有的类型,通过Data写入
ArrayList<ContentValues> data = new ArrayList<ContentValues>();
ContentValues row1 = new ContentValues();
row1.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE);
row1.put(ContactsContract.CommonDataKinds.Website.DATA, contact.getHomePage());
data.add(row1);
ContentValues row2 = new ContentValues();
row2.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
row2.put(ContactsContract.CommonDataKinds.Photo.PHOTO, contact.getPhotoData());
data.add(row2);
// Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, data);
context.startActivity(intent);
}
/**
* 添加联系人,但是不显示编辑界面。
* */
private void addContact(Contact contact) {
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(COLUMN_RAW_CONTACT_ID, 0)
.withValue(COLUMN_MIMETYPE, MIMETYPE_STRING_NAME)
.withValue(COLUMN_NAME, contact.getName())
.build());
Log.d(TAG, "add name: " + contact.getName());
// photo
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(COLUMN_RAW_CONTACT_ID, 0)
.withValue(COLUMN_MIMETYPE, MIMETYPE_STRING_PHOTO)
.withValue(COLUMN_PHOTO, contact.getPhotoData())
.build());
// web
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(COLUMN_RAW_CONTACT_ID, 0)
.withValue(COLUMN_MIMETYPE, MIMETYPE_STRING_WEB)
.withValue(COLUMN_WEB,contact.getHomePage())
.withValue(COLUMN_WEB_TYPE, contact.getHomePage())
.build());
// postal
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(COLUMN_RAW_CONTACT_ID, 0)
.withValue(COLUMN_MIMETYPE, MIMETYPE_STRING_ADDRESS)
.withValue(COLUMN_POSTAL,contact.getAddress())
.withValue(COLUMN_POSTAL_TYPE, contact.getAddressType())
.build());
if(!contact.getNumber().trim().equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(COLUMN_RAW_CONTACT_ID, 0)
.withValue(COLUMN_MIMETYPE, MIMETYPE_STRING_PHONE)
.withValue(COLUMN_NUMBER, contact.getNumber())
.withValue(COLUMN_NUMBER_TYPE, contact.getNumberType())
.build());
Log.d(TAG, "add number: " + contact.getNumber());
}
if(!contact.getFax().trim().equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(COLUMN_RAW_CONTACT_ID, 0)
.withValue(COLUMN_MIMETYPE, MIMETYPE_STRING_PHONE)
.withValue(COLUMN_NUMBER, contact.getFax())
.withValue(COLUMN_NUMBER_TYPE, contact.getFaxType())
.build());
Log.d(TAG, "add fax: " + contact.getFax());
}
if(!contact.getEmail().trim().equals("")) {
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(COLUMN_RAW_CONTACT_ID, 0)
.withValue(COLUMN_MIMETYPE, MIMETYPE_STRING_EMAIL)
.withValue(COLUMN_EMAIL, contact.getEmail())
.withValue(COLUMN_EMAIL_TYPE, contact.getEmailType())
.build());
Log.d(TAG, "add email: " + contact.getEmail());
}
try {
contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
Log.d(TAG, "add contact success.");
} catch (Exception e) {
Log.d(TAG, "add contact failed.");
Log.e(TAG, e.getMessage());
}
}