IOS 通訊錄的訪問(wèn)和修改的實(shí)現(xiàn)
IOS 通訊錄的訪問(wèn)和修改的實(shí)現(xiàn)
在iOS端可以通過(guò)AddressBook或者AddressBookUI兩個(gè)框架實(shí)現(xiàn),區(qū)別是第二個(gè)框架帶視圖,一般使用第一個(gè)框架就夠了。
下面介紹AddressBook框架的使用,注意這個(gè)是C語(yǔ)言框架,使用起來(lái)比較麻煩。
①請(qǐng)求授權(quán)
先判斷授權(quán)狀態(tài),如果未授權(quán)則進(jìn)行授權(quán)。
// 1.主動(dòng)請(qǐng)求授權(quán),先判斷授權(quán)狀態(tài)
NSInteger state = ABAddressBookGetAuthorizationStatus();
if (state == kABAuthorizationStatusAuthorized) {
NSLog(@"已經(jīng)授權(quán)");
}else{
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(book, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"授權(quán)成功");
}else{
NSLog(@"授權(quán)失敗");
}
});
}
②獲取通訊錄的聯(lián)系人
c語(yǔ)言沒(méi)有對(duì)象,通過(guò)一些以Ref結(jié)尾的指針來(lái)獲取數(shù)據(jù)。
注意C語(yǔ)言數(shù)組的規(guī)模通過(guò)函數(shù)獲取,拿到元素也要通過(guò)函數(shù)。
注意一些枚舉值以k開(kāi)頭。
注意電話是一個(gè)數(shù)組。
// 先判斷授權(quán)狀態(tài)
if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {
NSLog(@"未授權(quán)");
return;
}
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
CFArrayRef persons = ABAddressBookCopyArrayOfAllPeople(book);
CFIndex count = CFArrayGetCount(persons);
for (NSInteger i = 0; i < count; i++) {
ABRecordRef person = CFArrayGetValueAtIndex(persons, i);
CFStringRef lastName = ABRecordCopyValue(person, kABPersonLastNameProperty);
CFStringRef firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
ABMutableMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSLog(@"聯(lián)系人:%@ %@",lastName,firstName);
NSInteger cnt = ABMultiValueGetCount(phones);
for (int j = 0; j < cnt; j++) {
CFStringRef phone = ABMultiValueCopyValueAtIndex(phones, j);
NSLog(@"電話:%@ ",phone);
}
}
③修改通訊錄聯(lián)系人
首先拿到通訊錄中的人,然后調(diào)用SetValue方法來(lái)修改值。
最后不要忘記保存。
// 先判斷授權(quán)狀態(tài)
if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {
NSLog(@"未授權(quán)");
return;
}
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
CFArrayRef persons = ABAddressBookCopyArrayOfAllPeople(book);
ABRecordRef person = CFArrayGetValueAtIndex(persons, 0);
ABRecordSetValue(person, kABPersonLastNameProperty, @"changed", NULL);
ABAddressBookSave(book, NULL);
④添加一個(gè)聯(lián)系人
注意添加電話時(shí)應(yīng)創(chuàng)建MultiValue。
// 先判斷授權(quán)狀態(tài)
if (ABAddressBookGetAuthorizationStatus() != kABAuthorizationStatusAuthorized) {
NSLog(@"未授權(quán)");
return;
}
ABAddressBookRef book = ABAddressBookCreateWithOptions(NULL, NULL);
CFArrayRef persons = ABAddressBookCopyArrayOfAllPeople(book);
CFIndex count = CFArrayGetCount(persons);
for (NSInteger i = 0; i < count; i++) {
ABRecordRef person = CFArrayGetValueAtIndex(persons, i);
CFStringRef lastName = ABRecordCopyValue(person, kABPersonLastNameProperty);
CFStringRef firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
ABMutableMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSLog(@"聯(lián)系人:%@ %@",lastName,firstName);
NSInteger cnt = ABMultiValueGetCount(phones);
for (int j = 0; j < cnt; j++) {
CFStringRef phone = ABMultiValueCopyValueAtIndex(phones, j);
NSLog(@"電話:%@ ",phone);
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
iOS利用AFNetworking實(shí)現(xiàn)文件上傳的示例代碼
本篇文章主要介紹了iOS利用AFNetworking實(shí)現(xiàn)文件上傳的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
鍵盤(pán)彈出時(shí)會(huì)覆蓋文本框怎么解決
在一些網(wǎng)站登陸界面,我們經(jīng)常會(huì)見(jiàn)到,鍵盤(pán)的出現(xiàn)與隱藏操作,那么基于代碼是如何實(shí)現(xiàn)的呢?下面小編寫(xiě)了具體代碼介紹,特此分享到腳本之家平臺(tái),供大家參考2016-04-04
IOS開(kāi)發(fā)之tableView點(diǎn)擊行跳轉(zhuǎn)并帶有“顯示”更多功能
這篇文章給大家介紹通過(guò)點(diǎn)擊城市中的tableView跳轉(zhuǎn)到旅游景點(diǎn)的tableView,下面會(huì)有“顯示”更多的功能,代碼簡(jiǎn)單易懂,對(duì)ios點(diǎn)擊tableview跳轉(zhuǎn)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-03-03
iOS開(kāi)發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)
這篇文章主要介紹了iOS開(kāi)發(fā)生成二維碼圖片(附中間帶有小圖標(biāo)二維碼)的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-10-10
iOS實(shí)現(xiàn)文字轉(zhuǎn)化成彩色文字圖片
這篇文章主要為大家詳細(xì)介紹了iOS文字轉(zhuǎn)化成彩色文字圖片的實(shí)現(xiàn)方法,可以實(shí)現(xiàn)不同字體,漸變的效果,感興趣的小伙伴們可以參考一下2016-03-03
IOS開(kāi)發(fā)之手勢(shì)響應(yīng)事件優(yōu)先級(jí)的實(shí)例詳解
這篇文章主要介紹了IOS開(kāi)發(fā)之手勢(shì)響應(yīng)事件優(yōu)先級(jí)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能夠掌握手勢(shì)響應(yīng)優(yōu)先級(jí)的使用方法,需要的朋友可以參考下2017-09-09
iOS如何用100行代碼實(shí)現(xiàn)簡(jiǎn)單的抽屜效果
最近在網(wǎng)上看到一些抽屜效果,看起來(lái)很酷!很眩!但是,下不下來(lái)看代碼, 所以決定還是自己寫(xiě)吧!!這篇文章通過(guò)近100行的代碼就實(shí)現(xiàn)了簡(jiǎn)單的抽屜效果,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10
iOS開(kāi)發(fā)-實(shí)現(xiàn)大文件下載與斷點(diǎn)下載思路
本篇文章主要介紹了iOS開(kāi)發(fā)-實(shí)現(xiàn)大文件下載與斷點(diǎn)下載思路,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01

