/**
* @brief 显示联系人编辑界面
* */
public void editContact(String contactId,Context context) {
if (context == null || contactId == null) {
return ;
}
Uri uri = getContactUri(contactId,context);
if (uri != null) {
Intent editIntent = new Intent(Intent.ACTION_EDIT);
editIntent.setDataAndType(uri,ContactsContract.Contacts.CONTENT_ITEM_TYPE);
// editIntent.putExtra("finishActivityOnSaveCompleted", true);
context.startActivity(editIntent);
} else {
}
}
/**
* 修改联系人信息
* */
public void updateContact(Contact contactOld, Contact contactNew) {
Log.w(TAG, "**update start**");
String id = getContactID(contactOld.getName());
if(id.equals("0")) {
Log.d(TAG, contactOld.getName()+" not exist.");
}/* else if(contactNew.getName().trim().equals("")){
Log.d(TAG, "contact name is empty. exit.");
} else if(!getContactID(contactNew.getName()).equals("0")){
Log.d(TAG, "new contact name already exist. exit.");
}*/ else {
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
//update name
// ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
// .withSelection(COLUMN_CONTACT_ID + "=? AND " + COLUMN_MIMETYPE + "=?",
// new String[]{id, MIMETYPE_STRING_NAME})
// .withValue(COLUMN_NAME, contactNew.getName())
// .build());
Log.d(TAG, "update name: " + contactNew.getName());
// photo
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(COLUMN_CONTACT_ID + "=? AND " + COLUMN_MIMETYPE + "=?",
new String[]{id, MIMETYPE_STRING_PHOTO})
.withValue(COLUMN_PHOTO, contactNew.getPhotoData())
.build());
// web
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(COLUMN_CONTACT_ID + "=? AND " + COLUMN_MIMETYPE + "=?",
new String[]{id, MIMETYPE_STRING_WEB})
.withValue(COLUMN_WEB,contactNew.getHomePage())
.withValue(COLUMN_WEB_TYPE, contactNew.getHomePage())
.build());
// postal
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(COLUMN_CONTACT_ID + "=? AND " + COLUMN_MIMETYPE + "=?",
new String[]{id, MIMETYPE_STRING_ADDRESS})
.withValue(COLUMN_POSTAL,contactNew.getAddress())
.withValue(COLUMN_POSTAL_TYPE, contactNew.getAddressType())
.build());
//update number
if(!contactNew.getNumber().trim().equals("")) {
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(COLUMN_CONTACT_ID + "=? AND " + COLUMN_MIMETYPE + "=? AND " + COLUMN_NUMBER_TYPE + "=?",
new String[]{id, MIMETYPE_STRING_PHONE,contactNew.getNumberType()})
.withValue(COLUMN_NUMBER, contactNew.getNumber())
.withValue(COLUMN_NUMBER_TYPE, contactNew.getNumberType())
.build());
Log.d(TAG, "update number: " + contactNew.getNumber());
}
// fax
if(!contactNew.getNumber().trim().equals("")) {
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(COLUMN_CONTACT_ID + "=? AND " + COLUMN_MIMETYPE + "=? AND " + COLUMN_NUMBER_TYPE + "=?",
new String[]{id, MIMETYPE_STRING_PHONE,contactNew.getFaxType()})
.withValue(COLUMN_NUMBER, contactNew.getFax())
.withValue(COLUMN_NUMBER_TYPE, contactNew.getFaxType())
.build());
Log.d(TAG, "update fax: " + contactNew.getNumber());
}
//update email if mail
if(!contactNew.getEmail().trim().equals("")) {
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(COLUMN_CONTACT_ID + "=? AND " + COLUMN_MIMETYPE + "=?",
new String[]{id, MIMETYPE_STRING_EMAIL})
.withValue(COLUMN_EMAIL, contactNew.getEmail())
.withValue(COLUMN_EMAIL_TYPE, contactNew.getEmailType())
.build());
Log.d(TAG, "update email: " + contactNew.getEmail());
}
try {
contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
Log.d(TAG, "update success");
} catch (Exception e) {
Log.d(TAG, "update failed");
Log.e(TAG, e.getMessage());
}
}
Log.w(TAG, "**update end**");
}