增加手機本地聯(lián)系人
try {
? ContentValues values =new ContentValues();
? //首先向RawContacts.CONTENT_URI執(zhí)行一個空值插入寂祥,目的是獲取系統(tǒng)返回的rawContactId
? Uri rawContactUri =context.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
? //獲取id
? ?long ?rawContactId = ContentUris.parseId(rawContactUri);
? //往data表入姓名數(shù)據(jù)
? ? values.clear();
? ? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? ? values.put(ContactsContract.Data.MIMETYPE,? ? ? ?ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
? ? values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,“name”);
? ? values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,"firstName");
? ? values.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,"lastName");
? ? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? ? //寫入頭像
? ? values.clear();
? ? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? ? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
? ? values.put(ContactsContract.CommonDataKinds.Photo.PHOTO,headImageByte);
? ? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
?//寫入手機號碼
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "phone");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? //寫入住宅電話
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, ?"phone");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? //寫入商務(wù)電話
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER,?"phone");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? //寫入商務(wù)傳真
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, ?"phone");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? // 聯(lián)系人公司和職位
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Organization.COMPANY, "company");
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? // 插入Email數(shù)據(jù)
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Email.DATA, "email");
? values.put(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
刪除手機本地聯(lián)系人
ContentResolver resolver =context.getContentResolver();
//刪除Contacts表中的數(shù)據(jù)
int delete =0;
try {
delete = resolver.delete(ContactsContract.Contacts.CONTENT_URI, ContactsContract.Contacts._ID +" =?", new String[]{String.valueOf(contactsDTO.getId())});
}catch (Exception e) {}
//刪除RawContacts表的數(shù)據(jù)
int delete3 =0;
try {
delete3 = resolver.delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.RawContacts.CONTACT_ID +" =?", new String[]{String.valueOf(contactsDTO.getId())});
}catch (Exception e) {}
//刪除姓名
int delete4 =0;
try {
delete4 = resolver.delete(ContactsContract.RawContacts.CONTENT_URI, "display_name=?", new String[]{contactsDTO.getName()});
}catch (Exception e) {}
修改手機本地聯(lián)系人
try {
//獲取要修改的聯(lián)系人的rawContactId 铛碑,然后根據(jù)rawContactId 進(jìn)行修改信息
ContentResolver contentResolver =context.getContentResolver();
? Cursor cursor = contentResolver.query(ContactsContract.RawContacts.CONTENT_URI, null, ContactsContract.RawContacts.CONTACT_ID +"=?", new String[]{“id”}, null);
? int rawContactId = -1;
? while (cursor.moveToNext()) {
rawContactId = cursor.getInt(cursor.getColumnIndexOrThrow(ContactsContract.RawContacts._ID));
? }
cursor.close();
? cursor =null;
? ContentValues values =new ContentValues();
? //修改全名汽烦,名字和姓氏
? values.clear();
? values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,“name”);
? values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,"firstName");
? values.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, "lastname");
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.CONTACT_ID +"=?", new String[]{"id"});
? //修改地址
? values.clear();
? values.put(ContactsContract.CommonDataKinds.Organization.COMPANY, "company");
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.CONTACT_ID +"=? and " + ContactsContract.Data.MIMETYPE +"=?", new String[]{"id", ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE});
? //修改郵箱
? values.clear();
? values.put(ContactsContract.CommonDataKinds.Email.ADDRESS, "email");
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.CONTACT_ID +"=? and " + ContactsContract.Data.MIMETYPE +"=?", new String[]{"id", ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE});
? //修改頭像
? values.clear();
? values.put(ContactsContract.CommonDataKinds.Photo.PHOTO, headImagebyte);
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.CONTACT_ID +"=? and " + ContactsContract.Data.MIMETYPE +"=?", new String[]{"id", ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE});
//這里修改手機號的邏輯是先通過update將之前手機號的數(shù)據(jù)設(shè)置為空,然后通過insert再出入新的手機號牍颈;通過代碼獲取聯(lián)系人手機號數(shù)據(jù)是對的琅关,但是在手機通訊里看聯(lián)系人,發(fā)現(xiàn)聯(lián)系人會有多條手機號為空的條目勤篮,(沒辦法色罚,暫時不知道該怎么直接update手機號戳护,┭┮﹏┭┮)
? //修改手機號??
values.clear();
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.MIMETYPE +"=? and " + ContactsContract.Data.RAW_CONTACT_ID +"=?", new String[]{ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, rawContactId +""});
? values.clear();
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.MIMETYPE +"=? and " + ContactsContract.Data.RAW_CONTACT_ID +"=?", new String[]{ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, rawContactId +""});
? values.clear();
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE);
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.MIMETYPE +"=? and " + ContactsContract.Data.RAW_CONTACT_ID +"=?", new String[]{ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, rawContactId +""});
? values.clear();
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "");
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK);
? contentResolver.update(ContactsContract.Data.CONTENT_URI, values, ContactsContract.Data.MIMETYPE +"=? and " + ContactsContract.Data.RAW_CONTACT_ID +"=?", new String[]{ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE, rawContactId +""});
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, “phone”);
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, “phone”);
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_HOME);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, “phone”);
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
? values.clear();
? values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
? values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
? values.put(ContactsContract.CommonDataKinds.Phone.NUMBER,“phone”);
? values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK);
? context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
查詢手機本地聯(lián)系人
Cursor cursor =context.getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
? ? ? ? while (cursor.moveToNext()) {
? ? ? ? ? //新建一個聯(lián)系人實例
? ? ? ? ? ContactsDTO temp =new ContactsDTO();
//獲取聯(lián)系人id
? ? ? ? ? String contactId = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
? ? ? ? ? temp.id = contactId;
//獲取聯(lián)系人name
? ? ? ? ? Cursor nameCur =context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID +"=" + contactId, null, null);
? ? ? ? ? if (nameCur.moveToNext()) {
String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
? ? ? ? ? ? String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
? ? ? ? ? ? temp.setFirst_name(given);
? ? ? ? ? ? temp.setLast_name(family);
? ? ? ? ? }
nameCur.close();
String contactName = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
? ? ? ? ? temp.setName(contactName);
//獲取聯(lián)系人頭像
? ? ? ? ? try {
temp.head_img =getContactsIcon(context, contactId);
? ? ? ? ? }catch (IOException e) {
e.printStackTrace();
? ? ? ? ? }
//獲取聯(lián)系人郵箱
Cursor email =context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = " + contactId, null, null);
? ? ? ? ? while (email.moveToNext()) {
String mail = email.getString(email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
? ? ? ? ? ? temp.setEmail(mail);
? ? ? ? ? }
email.close();
//獲取聯(lián)系人公司
? ? ? ? ? String orgWhere = ContactsContract.Data.CONTACT_ID +" = ? AND " + ContactsContract.Data.MIMETYPE +" = ?";
? ? ? ? ? String[] orgWhereParams =new String[]{contactId,
? ? ? ? ? ? ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE};
? ? ? ? ? Cursor orgCur =context.getContentResolver().query(ContactsContract.Data.CONTENT_URI,
? ? ? ? ? ? null, orgWhere, orgWhereParams, null);
? ? ? ? ? if (orgCur.moveToFirst()) {
//組織名 (公司名字)
? ? ? ? ? ? String company = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
? ? ? ? ? ? temp.setCompany(company);
? ? ? ? ? }
orgCur.close();
? ? ? ? ? //獲取聯(lián)系人電話號碼
? ? ? ? ? Cursor phoneCursor =context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
? ? ? ? ? ? null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +"=" + contactId, null, null);
? ? ? ? ? while (phoneCursor.moveToNext()) {
int pN = phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
? ? ? ? ? ? String phone = phoneCursor.getString(pN);
? ? ? ? ? ? int pT = phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
? ? ? ? ? ? String phoneType = phoneCursor.getString(pT);
? ? ? ? ? ? phone = phone.replace("-", "");
? ? ? ? ? ? phone = phone.replace(" ", "");
? ? ? ? ? ? if (StringUtils.parseIntByString(phoneType) == ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE) {
temp.setMobile_phone(phone);
? ? ? ? ? ? }else if (StringUtils.parseIntByString(phoneType) == ContactsContract.CommonDataKinds.Phone.TYPE_HOME) {
temp.setHome_phone(phone);
? ? ? ? ? ? }else if (StringUtils.parseIntByString(phoneType) == ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME) {
temp.setHome_fax(phone);
? ? ? ? ? ? }else if (StringUtils.parseIntByString(phoneType) == ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE) {
temp.setBusiness(phone);
? ? ? ? ? ? }else if (StringUtils.parseIntByString(phoneType) == ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK) {
temp.setBusiness_fax(phone);
? ? ? ? ? ? }
}
//記得要把cursor給close掉
? ? ? ? ? phoneCursor.close();
? ? ? ? }
cursor.close();
/**
? * 獲取聯(lián)系人頭像
? *
? * @param context
? * @return
? */
? public static byte[]getContactsIcon(Context context, String contactsId)throws IOException {
// 獲取內(nèi)容解析者
? ? ContentResolver contentResolver = context.getContentResolver();
? ? // 查頭像要傳的uri 參1 baseuri 參2 要拼接的部分
? ? Uri contactUri = Uri.withAppendedPath(
ContactsContract.Contacts.CONTENT_URI, contactsId);
? ? //獲取聯(lián)系人頭像的流
? ? InputStream iconIs = ContactsContract.Contacts
.openContactPhotoInputStream(contentResolver, contactUri);
? ? if (null == iconIs) {
return null;
? ? }
? ? return toByteArray(iconIs);
? }
public static byte[]toByteArray(InputStream input)throws IOException {
ByteArrayOutputStream output =new ByteArrayOutputStream();
? byte[] buffer =new byte[4096];
? int n =0;
? while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
? }
return output.toByteArray();
}