国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

淺談Android手機聯系人開發之增刪查改功能

2019-10-23 18:29:31
字體:
來源:轉載
供稿:網友

最近在做手機聯系人的功能模塊的時候,遇到了很多的坑,在網上搜索的有一些所謂的最全的手機聯系人開發的介紹還存在一些bug,所以我把我最近的項目心得和方法寫下來,既能幫助大家減少了解android/203963.html">android開發手機聯系人的門檻,好,廢話少說,接下來直奔主題。

一、深入淺出手機聯系人的前奏(小米手機的data表跟模擬器的data表不一樣)

1、手機聯系人主要是對contacts2.db數據庫表的操縱,這個數據庫中有三個表是比較重要的,分別是data,raw_contacts,mimetyps這三個表。在下面的增刪查改模塊中,主要是根據表之間的關系來關聯的處理的。

1.1、data表

android,增刪改查,聯系人

1.2、mimetypes表

android,增刪改查,聯系人

1.3、raw_contacts表

android,增刪改查,聯系人

1.4、下載contacts2.db表的方法

在eclipse中打開android模擬器,在eclipse導航欄的window->show View->other..->File Explorer.單擊eclipse導航欄右上角的DDMS,File Explorer 下的data->data->com.android.providers.contact->databases下就有contacts2.db數據庫了。單擊然后保存就可以了。

查看SqlLite軟件的下載鏈接

android,增刪改查,聯系人

2、深入淺出之手機聯系人查詢模塊

 /** * 通過輸入獲取電話號碼 */ public void number(String name1,long rawContactId) { //使用ContentResolver查找聯系人數據 Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); //遍歷查詢結果,找到所需號碼 while (cursor.moveToNext()) {  //獲取聯系人ID  String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));  //獲取聯系人的名字  String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));  if (name1.equals(contactName)) {  //使用ContentResolver查找聯系人的電話號碼和用戶名  Cursor phone = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);  if (phone.moveToNext()) {    String phoneNumber1 = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));//電話號碼  String phoneName1 = phone.getString(phone.getColumnIndex(Phone.DISPLAY_NAME));//姓名   phoneNumber.setText(phoneNumber1);  name.setText(phoneName1);  }  //獲取郵箱信息  Cursor emails =getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID+"="+contactId,null,null);   while(emails.moveToNext()){   String emailAddress =emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));   email.setText(emailAddress);   }   //獲取IM信息   Cursor cursorQQ =getContentResolver().query(ContactsContract.Data.CONTENT_URI,null,ContactsContract.Data.RAW_CONTACT_ID+"="+rawContactId + " AND " + "mimetype_id=2",null,null);   while(cursorQQ.moveToNext()){   //獲取公司信息   String im1 = cursorQQ.getString(cursorQQ.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA));    qq.setText(im1);  }   //獲取公司信息   Cursor cursorCompany =getContentResolver().query(ContactsContract.Data.CONTENT_URI,null,ContactsContract.Data.RAW_CONTACT_ID+"="+rawContactId + " AND " + "mimetype_id = 4",null,null);    while(cursorCompany.moveToNext()){   String company1=cursorCompany.getString(cursorCompany.getColumnIndex("data1"));   String position1=cursorCompany.getString(cursorCompany.getColumnIndex("data4"));   position.setText(position1);    company.setText(company1);   }  }  }}

3、深入淺出之手機聯系人增加模塊 

 //增加聯系人 public void addContact(String name, String phoneNumber,String email,String company,String position,String im) {  /* 往 raw_contacts 中添加數據,并獲取添加的id號*/  /* 往 raw_contacts 中添加數據,并獲取添加的id號*/  Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");  ContentValues values = new ContentValues();  long rawContactId= ContentUris.parseId(resolver.insert(uri, values));  //插入data表  uri = Uri.parse("content://com.android.contacts/data");  // 向data表插入數據  if (name != "") {   values.put("raw_contact_id", rawContactId);   values.put("mimetype", "vnd.android.cursor.item/name");   values.put("data2", name);   resolver.insert(uri, values);  }  // 向data表插入電話號碼  if ( phoneNumber != "") {   values.clear();   values.put("raw_contact_id", rawContactId);   values.put("mimetype", "vnd.android.cursor.item/phone_v2");   values.put("data2", "2");   values.put("data1", phoneNumber);   resolver.insert(uri, values); }  //向data表中插入郵箱 if (email!= "") {   // 添加Email   values.clear();   values.put("raw_contact_id", rawContactId);  values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);   values.put(Email.DATA, email);  values.put(Email.TYPE, Email.TYPE_WORK);   resolver.insert(uri, values);  } //向data表中插入聯系人的組織 if(company!=""&&position!=""){  //organization  values.clear();   values.put(Data.RAW_CONTACT_ID, rawContactId);   values.put(Organization.MIMETYPE, Organization.CONTENT_ITEM_TYPE);   values.put(Organization.LABEL, name);   values.put(Organization.TITLE, position);   values.put(Organization.COMPANY, company);   values.put(Organization.TYPE,Organization.TYPE_WORK);   context.getContentResolver().insert(uri, values);  } //向data表中插入聯系人的QQ if(im!=""){  //im  values.clear();   values.put("raw_contact_id", rawContactId);   values.put("mimetype", "vnd.android.cursor.item/im");   values.put(Im.DATA, im);   values.put(Im.TYPE, Im.TYPE_WORK);   resolver.insert(uri, values);  }  } 

4、深入淺出之手機聯系人更新模塊

// 更新聯系人  public void updataContact(long rawContactId,String name,String number,String email,String company,String position,String im) {   Uri uri = Uri.parse("content://com.android.contacts/data");//對data表的所有數據操作  ContentValues values = new ContentValues();  //更新電話號碼  values.put("data1", number);  resolver.update(uri, values, "mimetype_id=? and raw_contact_id=?", new String[]{"5", rawContactId+""}) ;  //更新聯系人姓名  values.clear();  values.put("data1", name);  resolver.update(uri, values, "mimetype_id=? and raw_contact_id=?", new String[]{"7", rawContactId+""}) ;  //更新email  values.clear();  values.put("data1", email);  resolver.update(uri, values, "mimetype_id=? and raw_contact_id=?", new String[]{"1", rawContactId+""}) ;   //更新im  values.clear();  values.put("data1", im);  resolver.update(uri, values, "mimetype_id=? and raw_contact_id=?", new String[]{"2", rawContactId+""}) ;   //更新company  values.clear();  values.put("data1", company);  values.put("data3",name);  values.put("data4",position);  resolver.update(uri, values, "mimetype_id=? and raw_contact_id=?", new String[]{"4", rawContactId+""}) ;  } 

5、深入淺出之手機聯系人刪除模塊

// 刪除聯系人  public void deleteContact(long rawContactId) {  Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");  Cursor cursor =  resolver.query(uri,new String[]{RawContacts._ID},"contact_id=?",new String[]{String.valueOf(rawContactId) }, null );   if(cursor.moveToFirst()){  int id = cursor.getInt(0);  resolver.delete(uri, "_id=?",new String[]{id+""});  uri = Uri.parse("content://com.android.contacts/data");  resolver.delete(uri, "raw_contact_id=?",new String[]{id+""});  cursor.close();  }  } 

6、大話自制手機聯系人軟件與系統手機聯系人軟件的區別

6.1、系統的手機聯系人軟件在刪除單個聯系人的時候不是直接刪除的,然是通過把某個值設置為0,使得該手機聯系人信息不可見,根據網上的大多數實例都是直接把data數據庫表中的單個聯系人的信息直接delete了。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石家庄市| 洛川县| 和林格尔县| 渑池县| 炎陵县| 精河县| 上蔡县| 玛沁县| 资阳市| 白河县| 安远县| 丘北县| 循化| 哈密市| 根河市| 梁河县| 当涂县| 比如县| 康马县| 斗六市| 于都县| 安仁县| 东光县| 双牌县| 屏南县| 德格县| 宜川县| 绩溪县| 巴南区| 东乡县| 江西省| 定州市| 青海省| 吴江市| 商河县| 多伦县| 雷山县| 惠安县| 东阳市| 辰溪县| 开封县|