android通訊錄開發 增刪改查(附Demo)
不廢話,直接開擼
主要邏輯程式碼如下
單查詢/增加聯絡人
/**
* 寫入手機聯絡人
*/
private void writeContact() {
String name = "test";
String number = "13666668888";
//先查詢要新增的號碼是否已存在通訊錄中, 不存在則新增. 存在則提示使用者
Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + number);
ContentResolver resolver = getContentResolver();
//從raw_contact表中返回display_name
Cursor cursor = resolver.query(uri, new String[]{ContactsContract.Data.DISPLAY_NAME}, null, null, null);
if (cursor == null)
return;
if (cursor.moveToFirst()) {
Log.i("nn", "name=" + cursor.getString(0));
Toast.makeText (this, "存在相同號碼", Toast.LENGTH_SHORT).show();
} else {
uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentValues values = new ContentValues();
long contact_id = ContentUris.parseId(resolver.insert(uri, values));
//插入data表
uri = Uri.parse ("content://com.android.contacts/data");
//add Name
values.put("raw_contact_id", contact_id);
values.put(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/name");
values.put("data2", "qq");
values.put("data1", name);
resolver.insert(uri, values);
values.clear();
//add Phone
values.put("raw_contact_id", contact_id);
values.put(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/phone_v2");
values.put("data2", "2"); //手機
values.put("data1", number);
resolver.insert(uri, values);
values.clear();
//add email
values.put("raw_contact_id", contact_id);
values.put(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/email_v2");
values.put("data2", "1"); //郵箱
values.put("data1", "[email protected]");
resolver.insert(uri, values);
values.clear();
//add organization
values.put("raw_contact_id", contact_id);
values.put(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/organization");
values.put("data4", "產品經理"); //職務
values.put("data1", "騰訊科技"); //公司
resolver.insert(uri, values);
values.clear();
Toast.makeText(this, "插入號碼成功", Toast.LENGTH_SHORT).show();
}
cursor.close();
}
注意: 使用魅族手機測試得到一個有趣的結果, 如果query時傳入的只是一段短小的號碼, 比如: 13612 那麼會返回所有匹配包含到這各欄位的結果, 例如有兩個號碼分別是 13612 99 8888 / 139 13612 888 .
那麼最終查詢則會返回號碼存在的結果
刪除聯絡人
/**
* 刪除聯絡人
*/
private void deleteContact() {
String name = "test";
//根據姓名求id
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(uri, new String[]{ContactsContract.Data._ID}, "display_name=?", new String[]{name}, null);
if (cursor == null)
return;
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 + ""});
Toast.makeText(this, "刪除號碼成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "沒有找到號碼", Toast.LENGTH_SHORT).show();
}
cursor.close();
}
更改聯絡人
/**
* 更改聯絡人
*/
private void changeContact(){
String name = "test";
String newPhone = "13644440000";
//根據姓名求id
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(uri, new String[]{ContactsContract.Data._ID}, "display_name=?", new String[]{name}, null);
if (cursor == null)
return;
if (cursor.moveToFirst()) {
int id = cursor.getInt(0);
ContentValues values = new ContentValues();
values.put("data1", newPhone);
resolver.update(uri, values, "mimetype=? and raw_contact_id=?", new String[]{"vnd.android.cursor.item/phone_v2", id + ""});
}else{
Toast.makeText(this, "沒有找到號碼", Toast.LENGTH_SHORT).show();
}
cursor.close();
}
列表查詢
private List<HashMap<String, String>> mContactList = new ArrayList<>();
/**
* 查詢手機聯絡人並顯示
*/
private void queryContactsShowData() {
mContactList.clear();
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
if (cursor == null)
return;
while (cursor.moveToNext()) {
String phoneName;
String phoneNumber;
HashMap<String, String> listItem = new HashMap<>();
phoneName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
listItem.put("phoneName", phoneName);
listItem.put("phoneNumber", phoneNumber);
mContactList.add(listItem);
}
cursor.close();
mRv.setAdapter(new ContactAdapter());
mRv.setLayoutManager(new LinearLayoutManager(mContext));
}
附上測試的Demo
相關推薦
android通訊錄開發 增刪改查(附Demo)
不廢話,直接開擼 主要邏輯程式碼如下 單查詢/增加聯絡人 /** * 寫入手機聯絡人 */ private void writeContact() { String name = "test";
TP5學習基礎一:增刪改查小demo
表單 arr 處理 php req 學習 model類 浪費 新手 ①TP5--增刪改查簡單的demo 我先吐槽一下:因為工作需要研究tp5,去官網看了一下哎呦,資源挺多挺全啊!然後下載唯一免費的官方教程,我曹pdf打開533頁。講的很細但是開發能等看完才做嗎?看到精簡版快
MyBatis增刪改查操作Demo
第一步:導包:mybatis及jdbc connector.jar 第三步:配置表和類的對映檔案,實體類名.xml(在裡面寫sql語句) 第四步:建立資料庫會話session,進行增刪改查 檔案目錄 SqlMapConfig.xml <
Android-SQLiteOpenHelper裡增刪改查
為什麼要寫一篇,Android-SQLiteOpenHelper裡增刪改查,的文章呢; 因為之前的方式是:MySQLiteOpenHelper(只負責 生成開啟據庫/生成開啟表/升級表),在其他端:完成此資料庫表的增刪改查邏輯處理,這樣程式碼有些分散 現在 MySQLiteOpenHelper(負責
Java操作MongoDB增刪改查工具Demo
——因為實習工作需要,在學MongoDB,參考了公司的一個MongDB服務類,寫了一個整合的Demo,涉及到的大部分的增刪改查操作,而且還算規範,給大家參考!原始碼:(完整專案檔案下載連結:點選開啟連結)http://download.csdn.net/detail/zha
微信小程式雲開發增刪改查
Page({ data: { id:'',//修改用來儲存_id iSshow:true, inpVal:'', inp2Val:'', list:[] }, onLoad: function() { var tha
微信小程式•雲開發增刪改查
html <view class="container"> <view class='box' style='background:#FFFFFF'> <label>姓名:</label> <in
【Asp.Net】登陸註冊+sql server增刪改查 小demo
由於只注重主要功能實現,並未優化前端頁面,所以看起來比較原始。 採用webform技術 三層架構 + webform顯示 Models層,資料模型層 BLL層,業務邏輯層 reference Models and DAO DAO層,資料訪問層 reference M
HBuilder ------混合開發 -----增刪改查
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><script type="text/javascript" src=
小程式雲開發增刪改查
學習小程式第一天,踩了不少坑,比如: 1.誤把微信公眾的appId當作小程式appId用 2.沒有設定許可權,導致請求成功但是獲取不到資料(修改表的許可權設定為"所有使用者可讀,僅建立者及管理員可寫") 3.去修改表中不是自己在小程式建立的資訊(表中沒有openid的資
VUE2.0增刪改查附編輯新增model(彈框)元件共用
Vue實戰篇(增刪改查附編輯新增model(彈框)元件共用) 前言 最近一直在學習Vue,發現一份crud不錯的原始碼 預覽連結 https://taylorchen709.github.
Android——操作資料庫-增刪改查-案例《商品展示》
package bzu.edu.cn.a17lab08; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActi
[VB] VB實現一個窗體的增刪改查的demo
日常開發中,經常會針對默寫資料表進行增刪改查。 每次都要單獨處理,費時費力,考慮通過一個窗體進行封裝。(借鑑當時接觸的某家公司的套路) 外圍在呼叫時,傳入sql字串,展示字串,然後 被呼叫窗體根據傳入的資訊進行排版展示。 同時通過設定 增刪改查標誌,提供增刪改查的關聯
實現用資料庫儲存通訊錄 實現“增刪改查”的功能
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> #include <string.h> char name[20]; int age; char sex[20]; char phonenum
網頁購物車增刪改查小demo(AngularJS)
<!DOCTYPE html> <html><head><meta charset="UTF-8"><title></title><script src="js/angular.js">&l
jQuery登入增刪改查小demo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/
Android學習--------實現增刪改查數據庫操作以及實現相似微信好友對話管理操作
span varchar sta nta 刪除 statistic 版權 exec XML 版權聲明:本文為博主原創文章,轉載請註明原文地址。謝謝~ https://blog.csdn.n
Android入門 增刪改查通訊錄
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
使用CoreData進行資料增刪改查(附Demo)
本文主要介紹簡單CoreData的使用,從建立工程到進行資料的增刪改查,關於CoreData中的名詞解釋什麼的不做過多介紹。 首先,建立一個CoreData工程,在建立工程的選項處勾選Use CoreData,建立成功後,會在AppDelegat
Android 通訊錄增刪改查
一、通訊錄應用介紹 通訊錄應用是Android自帶的應用程式,我們看到此應用的時候,可能只認為這是一個應用,用資料庫儲存資料,但是實際上不是這樣的。 通訊錄是ContentProvider的應用,通訊錄由兩部分組成: (1)com.android.providers.