日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对联系人进行增删改查

發布時間:2023/12/31 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对联系人进行增删改查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我已經將聯系人操作的方法進行了封裝,暴露了幾個重要的方法,方便以后調用。

1.?public void printContactsList() //?獲取到的聯系人列表(用于測試用)

2.?public ArrayList<ContactBean> getContactsList() //?得到手機和SIM卡中的聯系人列表(姓名 + 電話號碼)

3.?public void add(String name, String phoneNumber) //?添加一個新的聯系人數據

4.?public boolean delete(String name) //?刪除單個聯系人數據

5.?public boolean update(String name, String phoneNumber) //?更新聯系人數據

6.?public boolean findNameByPhoneNumber(String phoneNumber) //?根據電話號碼查詢姓名

?

增刪改查通訊錄:http://blog.csdn.net/xiazdong/article/details/7713419

監聽聯系人的改變:http://www.eoeandroid.com/thread-234378-1-1.html

?

全部代碼:

package com.kale.contatctest;import java.util.ArrayList; import java.util.Collection;import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Contacts.Data; import android.text.TextUtils; import android.util.Log; import android.widget.Toast;public class ContactsManager {private Context mContext = null;public ContactsManager(Context context) {mContext = context;}/*** @description 打印獲取到的聯系人列表(用于測試用)**/public void printContactsList() {System.out.println("showContactsList----------------->" + getContactsList().size());for (int i = 0; i < getContactsList().size(); i++) {ContactBean cb = new ContactBean();cb = getContactsList().get(i);System.out.println(i + 1 + " " + cb.getContactName() + " " + cb.getPhoneNumber());}}/*** @description 得到手機和SIM卡中的聯系人列表(姓名 + 電話號碼)** @return*/public ArrayList<ContactBean> getContactsList() {ArrayList<ContactBean> contactsList = new ArrayList<ContactBean>();Collection<ContactBean> collection = getPhoneList();contactsList.addAll(collection);collection.clear();collection = getSIMList();contactsList.addAll(collection);return contactsList;}/*** 將“手機通訊錄”聯系人添加到list中*/private ArrayList<ContactBean> getPhoneList() {Uri uri = Phone.CONTENT_URI;return getContactsList(uri);}/*** 將“手機SIM”聯系人添加到list中*/private ArrayList<ContactBean> getSIMList() {Uri uri = Uri.parse("content://icc/adn");return getContactsList(uri);}/*** @param uri* @return 根據URL來得到手機/SIM卡中的聯系人列表*/private ArrayList<ContactBean> getContactsList(Uri uri) {ArrayList<ContactBean> list = new ArrayList<ContactBean>();ContentResolver resolver = mContext.getContentResolver();/** 獲取庫Phone表字段,僅僅獲取電話號碼聯系* 它所指向的其實是“content://com.android.contacts/data/phones”。* 這個URL對應著contacts表 和 raw_contacts表 以及 data表 所以說我們的數據都是從這三個表中獲取的。*/String[] PHONES_PROJECTION = new String[] { Phone.DISPLAY_NAME, Phone.NUMBER, Phone.CONTACT_ID };Cursor phoneCursor = resolver.query(uri, PHONES_PROJECTION, null, null, null);if (phoneCursor != null) {while (phoneCursor.moveToNext()) {// 得到手機號碼String phoneNumber = phoneCursor.getString(1);// 當手機號碼為空的或者為空字段 跳過當前循環,即使這個聯系人有名字也跳出循環if (TextUtils.isEmpty(phoneNumber)) {continue;}// 如果有電話好么,那么就得到聯系人名稱String contactName = phoneCursor.getString(0);ContactBean cb = new ContactBean();cb.setContactName(contactName);cb.setPhoneNumber(phoneNumber);list.add(cb);}phoneCursor.close(); // 關閉指針 }return list;}/*** 添加一個新的聯系人數據* * @param name* @param phoneNumber* @return 是否添加成功*/public void add(String name, String phoneNumber) {// 根據號碼找數據,如果存在則不添加,因為有號碼但無名字是不允許的// if (!findNameByPhoneNumber(phoneNumber)) {// 插入raw_contacts表,并獲取_id屬性Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = mContext.getContentResolver();ContentValues values = new ContentValues();long contact_id = ContentUris.parseId(resolver.insert(uri, values));// 插入data表uri = Uri.parse("content://com.android.contacts/data");// 添加姓名values.put("raw_contact_id", contact_id);values.put(Data.MIMETYPE, "vnd.android.cursor.item/name");values.put("data2", name);// values.put("data1", "Jack"); resolver.insert(uri, values);values.clear();// 添加手機號碼values.put("raw_contact_id", contact_id);values.put(Data.MIMETYPE, "vnd.android.cursor.item/phone_v2");values.put("data2", "2"); // 2表示手機values.put("data1", phoneNumber);resolver.insert(uri, values);values.clear();}/*** 刪除單個聯系人數據* * @param name* @return 是否刪除成功*/public boolean delete(String name) {try {// 根據姓名求idUri uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = mContext.getContentResolver();Cursor cursor = resolver.query(uri, new String[] { Data._ID }, "display_name = ?", new String[] { name }, null);if (cursor.moveToFirst()) {int id = cursor.getInt(0);// 根據id刪除data中的相應數據resolver.delete(uri, "display_name = ?", new String[] { name });uri = Uri.parse("content://com.android.contacts/data");resolver.delete(uri, "raw_contact_id = ?", new String[] { id + "" });return true;}} catch (Exception e) {e.printStackTrace();}Toast.makeText(mContext, "刪除失敗", Toast.LENGTH_SHORT).show();return false;}/** // 刪除全部聯系人,十分耗時間。有錯誤 public boolean deleteAllContact() { ContentResolver* resolver = mContext .getContentResolver(); Cursor contactsCur =* resolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null,* null); while(contactsCur.moveToNext()){ //獲取ID String rawId =* contactsCur.* getString(contactsCur.getColumnIndex(ContactsContract.Contacts._ID));* //刪除 String where = ContactsContract.Data._ID + " =?"; String[]* whereparams = new String[]{rawId};* resolver.delete(ContactsContract.RawContacts.CONTENT_URI, where,* whereparams); } if(contactsCur.moveToNext() == false){ return true; }* return false; }*//** //刪除全部數據 public boolean deleteAll(){ getContentResolver().delete(* ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId), null,* null); try { ContentResolver resolver = mContext .getContentResolver();* Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");* resolver.delete(uri, "display_name= true", new String[]{"true"}); uri =* Uri.parse("content://com.android.contacts/data"); resolver.delete(uri,* "raw_contact_id= true", new String[]{"true"});* * } catch (Exception e) { Toast.makeText(mContext, "刪除失敗",* Toast.LENGTH_SHORT).show(); e.printStackTrace(); } return false; }*//*** @description 更新聯系人數據* * @param name* @param phoneNumber* @return 是否更新成功*/public boolean update(String name, String phoneNumber) {try {// 根據姓名求id,再根據id刪除Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = mContext.getContentResolver();Cursor cursor = resolver.query(uri, new String[] { Data._ID }, "display_name = ?", new String[] { name }, null);if (cursor.moveToFirst()) {int id = cursor.getInt(0);Uri mUri = Uri.parse("content://com.android.contacts/data");// 對data表的所有數據操作ContentResolver mResolver = mContext.getContentResolver();ContentValues values = new ContentValues();values.put("data1", phoneNumber);mResolver.update(mUri, values, "mimetype=? and raw_contact_id=?", new String[] { "vnd.android.cursor.item/phone_v2", id + "" });return true;}} catch (Exception e) {e.printStackTrace();}Toast.makeText(mContext, "修改失敗", Toast.LENGTH_SHORT).show();return false;}/*** @description 根據電話號碼查詢姓名** @param phoneNumber* @return 查詢是否成功*/public boolean findNameByPhoneNumber(String phoneNumber) {// URI = content://com.android.contacts/data/phones/filter/#Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + phoneNumber);ContentResolver resolver = mContext.getContentResolver();// 從raw_contact表中返回display_nameCursor cursor = resolver.query(uri, new String[] { Data.DATA4 }, null, null, null); if (cursor.moveToFirst()) {Log.d("ContactsManager", "找到這個號碼");return true;} else {Log.e("ContactsManager", "沒找到這個號碼");return false;}}}

?

總結

以上是生活随笔為你收集整理的对联系人进行增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。