iOS 通讯录-获取联系人属性
来源:互联网 发布:网络销售代理合同范本 编辑:程序博客网 时间:2024/05/16 23:47
现在写一下读取联系人数据相关操作
要读取通讯录数据库 需要
创建通讯录对象查询获取数据(所有或者部分)获取通讯录某一条记录(某个人的所有数据)获取这个人的各种属性数据 就是这样1
2
3
CFErrorRef error = NULL;
//创建一个通讯录操作对象
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
第一参数是保留参数,传递NULL即可;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//查找联系人
- (
void
)filterContentForSearchText:(NSString *)searchText
{
//判断授权状态
if
(ABAddressBookGetAuthorizationStatus()!=kABAuthorizationStatusAuthorized) {
return
;
}
CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
if
(searchText.length ==
0
) {
//查找所有
listContacts = CFBridgingRelease(ABAddressBookCopyArrayOfAllPeople(addressBook));
}
else
{
//根据字符串查找前缀关键字
CFStringRef cfSearchText = (CFStringRef)CFBridgingRetain(searchText);
listContacts = CFBridgingRelease(ABAddressBookCopyPeopleWithName(addressBook, cfSearchText));
CFRelease(cfSearchText);
}
//这里应该刷新表格
[self.tableView reloadData];
CFRelease(addressBook);
}
1
1
2
3
4
5
授权的状态:
kABAuthorizationStatusNotDetermined 用户还没有决定
kABAuthorizationStatusRestricted, 受限制
kABAuthorizationStatusDenied, 拒绝
kABAuthorizationStatusAuthorized 许可
1
1
联系人的属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<pre
class
=
"brush:java;"
>kABPersonFirstNameProperty;
// 名字
kABPersonLastNameProperty;
// 姓氏
kABPersonMiddleNameProperty;
// 中间名
kABPersonPrefixProperty;
// 前缀
kABPersonSuffixProperty;
// 后缀
kABPersonNicknameProperty;
// 昵称
kABPersonFirstNamePhoneticProperty;
// 名字的汉语拼音或者音标
kABPersonLastNamePhoneticProperty;
// 姓氏汉语拼音或者音标
kABPersonMiddleNamePhoneticProperty;
// 中间名的汉语拼音或者音标
kABPersonOrganizationProperty;
// 组织名
kABPersonJobTitleProperty;
// 工作头衔
kABPersonDepartmentProperty;
// 部门
kABPersonNoteProperty;
// 备注
kABPersonBirthdayProperty;
// 生日
kABPersonCreationDateProperty;
// 创建时间
kABPersonModificationDateProperty;
// 修改日期</pre><pre class="brush:java;"></pre><pre class="brush:java;"> //多值属性 (一个属性中又多个值) 有标签、值、id
kABPersonPhoneProperty ;
//电话号码属性 kABMultiStringPropertyType;//类型
kABPersonEmailProperty ;
//e-mail属性 kABMultiStringPropertyType;//类型
kABPersonURLProperty ;
//URL属性 kABMultiStringPropertyType;//类型
kABPersonRelatedNamesProperty;
// 亲属关系人属性 kABMultiStringPropertyType;//类型
kABPersonAddressProperty ;
//地址属性 kABMultiDictionaryPropertyType;//类型
kABPersonInstantMessageProperty;
//及时聊天属性 kABMultiDictionaryPropertyType;//类型
kABPersonSocialProfileProperty;
//社交账号属性 kABMultiDictionaryPropertyTypel;//类型</pre><br>利用上面的属性来查找想要的值
1
下面是单值属性:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static
NSString *CellIdentifier = @
"Cell"
;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if
(cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
//从搜索出的联系人数组中获取一条数据 转换为ABRecordRef格式
ABRecordRef thisPerson = CFBridgingRetain([listContacts objectAtIndex:[indexPath row]]);
//查找这条记录中的名字
NSString *firstName = CFBridgingRelease(ABRecordCopyValue(thisPerson, kABPersonFirstNameProperty));
firstName = firstName != nil? firstName:@
""
;
//查找这条记录中的姓氏
NSString *lastName = CFBridgingRelease(ABRecordCopyValue(thisPerson, kABPersonLastNameProperty));
cell.textLabel.text = [NSString stringWithFormat:@
"%@%@"
,firstName,lastName];
CFRelease(thisPerson);
return
cell;
}
下面是多值属性的查找方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//获取多值属性
- (
void
)multiValueProperty
{
ABRecordID personRecordID = [personIDASNumber intValue];
//personIDASNumber是NSNumber类型的值用来保存RecordID的值
CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
//通过ABRecordID属性找到ABRecord
ABRecordRef personRecord = ABAddressBookGetPersonWithRecordID(addressBook, personRecordID);
//通过ABRecord 查找多值属性
ABMultiValueRef emailProperty = ABRecordCopyValue(personRecord, kABPersonEmailProperty);
//将多值属性的多个值转化为数组
NSArray * emailArray = CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(emailProperty));
for
(
int
index =
0
; index < emailArray.count; index++) {
NSString *email = [emailArray objectAtIndex:index];
NSString *emailLabel = CFBridgingRelease(ABMultiValueCopyLabelAtIndex(emailProperty, index));
//判断当前这个值得标签
if
([emailLabel isEqualToString:(NSString *)kABWorkLabel]) {
NSLog(@
"%@"
, email);
}
}
}
获取联系人图片:
1
2
3
4
5
6
7
8
9
10
11
12
13
//获取联系人的图片
- (
void
)setImage
{
CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
ABRecordRef cecordRef = ABAddressBookGetPersonWithRecordID(addressBook,[personIDASNumber intValue]);
//判断联系人是否有照片
if
(ABPersonHasImageData(cecordRef)) {
//获取照片数据
NSData *photoData = CFBridgingRelease(ABPersonCopyImageData(cecordRef));
self.imageView.image = [UIImage imageWithData:photoData];
}
}
0 0
- iOS 通讯录-获取联系人属性
- iOS 通讯录-获取联系人属性
- 通讯录联系人各属性获取
- iOS 获取通讯录中联系人的所有属性
- iOS 获取通讯录中联系人的所有属性
- 小胖说事39-----iOS 获取通讯录中联系人的所有属性
- iOS 获取通讯录联系人信息
- iOS 获取通讯录联系人信息
- iOS获取通讯录联系人信息
- iOS获取通讯录联系人信息
- iOS获取通讯录联系人信息
- iOS获取通讯录联系人信息
- 获取通讯录中联系人的所有属性
- ios 通讯录 获取分组以及各组联系人
- IOS获取系统通讯录联系人信息
- IOS获取系统通讯录联系人信息
- IOS获取系统通讯录联系人信息
- IOS获取系统通讯录联系人信息
- ajax下提交form表单不能使用submit
- vs2010编译某个工程提示缺少lib或者头文件 vs2010的配置中的生成事件
- 使用Cygwin在Windows上体验Linux的快感
- 小学期acm训练第一发(简单数学题)
- 免安装Oracle客户端使用(转)
- iOS 通讯录-获取联系人属性
- coj_1022菜鸟与大牛
- 从哈希到布隆过滤器
- 关于mysql主从复制error_code 1593的小异常BUG
- gcc 命令 http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html
- 获取手机IP地址
- Linux-git简明教程(一)
- hdu5288 OO’s Sequence 二分 多校联合第一场
- java怎样实现线程的同步