ABExternalChangeCallback---监听AddressBook的变化
来源:互联网 发布:u盘centos 7安装教程 编辑:程序博客网 时间:2024/06/07 18:28
在自己的程序里,监听通讯录的改变,
1. 添加属性
@property (nonatomic) ABAddressBookRef addressBook;
@synthesize addressBook = _addressBook;
2. 添加ABExternalChangeCallback方法
void addressCallback(ABAddressBookRef addressBook, CFDictionaryRef info, void *context) {
[_instance unregisterCallback];//or will more than once
NSLog(@"addressCallback");
[_instance readAndWriteAddressBooksInBackground];
}
注意:程序之外,通讯录被改变是会调用此函数,但只知道通讯录被改变,具体怎么的改变不知道,info始终为null,
而且通讯录里面改变了几条,就会调用几次该监听函数,因此,要在第一次收到改变的时候,就移除监听。
3. 注册监听
- (void)registerCallback {
if (!_addressBook) {
_addressBook = ABAddressBookCreate();
}
if (!_hasRegister) {
ABAddressBookRegisterExternalChangeCallback(_addressBook, addressCallback, self);
_hasRegister = YES ;
NSLog(@"registerCallback");
}
}
注意:要保证_addressBook没有被release,才会调用addressCallback。
而且要保证只调用了一次注册,要是注册多次的话,通讯录中一条信息的改变,也会多次调用监听函数。
4. 移除监听
- (void)unregisterCallback {
NSLog(@"unRegisterCallback");
if (_hasRegister) {
ABAddressBookUnregisterExternalChangeCallback(_addressBook, addressCallback, self);
_hasRegister = NO;
}
}
- ABExternalChangeCallback---监听AddressBook的变化
- ABExternalChangeCallback---监听AddressBook的变化
- QT(3)对象和继承-Addressbook例子1
- AddressBook 地址簿 (电话簿) 访问与修改-IOS开发
- AddressBook 地址簿 (电话簿) 访问与修改-IOS开发
- AddressBook 地址簿 (电话簿) 访问与修改-IOS开发
- AddressBook 地址簿 (电话簿) 访问与修改-IOS开发
- AddressBook 地址簿 (电话簿) 访问与修改-IOS开发
- 监听EditText的变化
- 监听EditText的变化
- 监听EditText的变化
- 监听EditText的变化
- 监听EditText的变化
- 监听网络的变化
- 监听EditText的变化
- 监听屏幕布局的变化
- 监听EditText的变化--TextWatcher
- Android监听网络的变化
- Spring基于ThreadLocal的“资源-事务”线程绑定设计的缘起
- QT4 窗口切换
- thread
- 黑马程序员_.NET学习6(js)
- Shinichi Suzuki:Nurtured by Love-The classic Approach to Talent Education
- ABExternalChangeCallback---监听AddressBook的变化
- What's Next
- MS SQL Server查找表中是否有完全重复的数据he所有表的记录行数及其总和
- signal
- 转载和积累系列 - Node学习 - 2. 异步式I/O操作
- (转)Oracle的left join中on和where的区别
- StringUtils详细介绍
- Sencha Touch 2.0官方指南:如何使用"类"
- sourceinsight添加.v(verilog文件)文件进工程(project)