symbian 关于通讯录监听的问题解决
2009-08-19 18:31
274 查看
要求监听symbian通讯录的添加和删除 所以找了关于通讯录监听的代码来整和 找到了如下代码:
This is a simplified example of the code lines needed for the Contacts observer.(From Nokia Technical Library)
// Application UI owns contact observer
class CEventsAppUi : public CEikAppUi
{
public:
void ConstructL();
~CEventsAppUi();
public:
void HandleCommandL(TInt aCommand);
private:
CEventsAppView* iAppView; // owns
CEventsContacts* iContactObserver;//数据观察者
};
void CEventsAppUi::ConstructL()
{
BaseConstructL(); // Call base constructor
iAppView = CEventsAppView::NewL(ClientRect());
AddToStackL(iAppView);
// Create an observer
iContactObserver = new(ELeave) CEventsContacts(iAppView);
iContactObserver->ConstructL();
}
// CEventsContacts implements MContactDbObserver interface
class CEventsContacts : public CBase, public MContactDbObserver
{
public:
CEventsContacts(CEventsAppView* aAppView);
void ConstructL();
~CEventsContacts();
// Override the virtual function of MContactDbObserver
void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
private:
CContactDatabase* iContactDb;
CContactChangeNotifier* iNotifier;
CEventsAppView* iAppView;
};
CEventsContacts::CEventsContacts(CEventsAppView* aAppView)
:iAppView(aAppView)
{
}
void CEventsContacts::ConstructL()
{
// Open the database
iContactDb = CContactDatabase::OpenL();
// Register the observer
iNotifier = CContactChangeNotifier::NewL(*iContactDb, this);
}
CEventsContacts::~CEventsContacts()
{
delete iNotifier;
delete iContactDb;
}
void CEventsContacts::HandleDatabaseEventL(TContactDbObserverEvent
aEvent)
{
// The changed item
TContactItemId contactItem = aEvent.iContactId;
switch (aEvent.iType)
{
case EContactDbObserverEventContactChanged:
// Handle contact changed event
break;
case EContactDbObserverEventContactDeleted:
// Handle contact deleted event
break;
case EContactDbObserverEventContactAdded
// Handle contact added event
break;
...
default:
break;
}
}
将代码整合到我的程序里在mmp中添加了LIBRARY cntmodel.lib //for contact 包含了头文件#include <cntdbobs.h>
#include <cntdb.h> #include <cntdef.h> 其中cntdbobs.h里面定义了TContactDbObserverEvent
出现了错误这个:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: undefined identifier 'TContactItemId'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: (included from:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: C:/Symbian/Carbide/workspace/HelloWorld/inc/EventsContacts.h:17
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: C:/Symbian/Carbide/workspace/HelloWorld/inc/HelloWorldAppUi.h:15
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: C:/Symbian/Carbide/workspace/HelloWorld/src/HelloWorldDocument.cpp:11)
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: identifier 'TContactItemId' redeclared
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: was declared as: 'int'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: now declared as: 'long'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: (included from:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdb.h:13
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/inc/EventsContacts.h:18
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/inc/HelloWorldAppUi.h:15
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/src/HelloWorldDocument.cpp:11)
../src/HelloWorldAppUi.cpp:299: warning: preprocessor #warning directive
../src/HelloWorldAppUi.cpp:299: warning: #warning "Please see comment about help and UID3..."
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: undefined identifier 'TContactItemId'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: identifier 'TContactItemId' redeclared
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: was declared as: 'int'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: now declared as: 'long'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: (included from:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdb.h:13
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/inc/EventsContacts.h:18
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/src/EventsContacts.cpp:11)
../src/EventsContacts.cpp:56: undefined identifier 'iContactId'
这样看是很明显的重定义 但是不知道是哪个文件把自己的东西定义了 找了好久也没有解决问题
看哪个头文件也不是多余的啊 真是不知道是什么问题
最后发现要将头文件#include <cntdbobs.h>去掉 这样俩个头文件里面定义的东西才不能冲突因为今天没有时间写响应的代码了不知道哪个头文件该去掉 但是发现头文件不是都需要的 即使你发现哪个有用也不一定要加上 呵呵
整个教训了
This is a simplified example of the code lines needed for the Contacts observer.(From Nokia Technical Library)
// Application UI owns contact observer
class CEventsAppUi : public CEikAppUi
{
public:
void ConstructL();
~CEventsAppUi();
public:
void HandleCommandL(TInt aCommand);
private:
CEventsAppView* iAppView; // owns
CEventsContacts* iContactObserver;//数据观察者
};
void CEventsAppUi::ConstructL()
{
BaseConstructL(); // Call base constructor
iAppView = CEventsAppView::NewL(ClientRect());
AddToStackL(iAppView);
// Create an observer
iContactObserver = new(ELeave) CEventsContacts(iAppView);
iContactObserver->ConstructL();
}
// CEventsContacts implements MContactDbObserver interface
class CEventsContacts : public CBase, public MContactDbObserver
{
public:
CEventsContacts(CEventsAppView* aAppView);
void ConstructL();
~CEventsContacts();
// Override the virtual function of MContactDbObserver
void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
private:
CContactDatabase* iContactDb;
CContactChangeNotifier* iNotifier;
CEventsAppView* iAppView;
};
CEventsContacts::CEventsContacts(CEventsAppView* aAppView)
:iAppView(aAppView)
{
}
void CEventsContacts::ConstructL()
{
// Open the database
iContactDb = CContactDatabase::OpenL();
// Register the observer
iNotifier = CContactChangeNotifier::NewL(*iContactDb, this);
}
CEventsContacts::~CEventsContacts()
{
delete iNotifier;
delete iContactDb;
}
void CEventsContacts::HandleDatabaseEventL(TContactDbObserverEvent
aEvent)
{
// The changed item
TContactItemId contactItem = aEvent.iContactId;
switch (aEvent.iType)
{
case EContactDbObserverEventContactChanged:
// Handle contact changed event
break;
case EContactDbObserverEventContactDeleted:
// Handle contact deleted event
break;
case EContactDbObserverEventContactAdded
// Handle contact added event
break;
...
default:
break;
}
}
将代码整合到我的程序里在mmp中添加了LIBRARY cntmodel.lib //for contact 包含了头文件#include <cntdbobs.h>
#include <cntdb.h> #include <cntdef.h> 其中cntdbobs.h里面定义了TContactDbObserverEvent
出现了错误这个:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: undefined identifier 'TContactItemId'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: (included from:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: C:/Symbian/Carbide/workspace/HelloWorld/inc/EventsContacts.h:17
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: C:/Symbian/Carbide/workspace/HelloWorld/inc/HelloWorldAppUi.h:15
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: C:/Symbian/Carbide/workspace/HelloWorld/src/HelloWorldDocument.cpp:11)
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: identifier 'TContactItemId' redeclared
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: was declared as: 'int'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: now declared as: 'long'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: (included from:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdb.h:13
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/inc/EventsContacts.h:18
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/inc/HelloWorldAppUi.h:15
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/src/HelloWorldDocument.cpp:11)
../src/HelloWorldAppUi.cpp:299: warning: preprocessor #warning directive
../src/HelloWorldAppUi.cpp:299: warning: #warning "Please see comment about help and UID3..."
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdbobs.h:96: undefined identifier 'TContactItemId'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: identifier 'TContactItemId' redeclared
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: was declared as: 'int'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: now declared as: 'long'
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: (included from:
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdb.h:13
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/inc/EventsContacts.h:18
C:/Symbian/9.1/S60_3rd_MR/EPOC32/include/cntdef.h:71: C:/Symbian/Carbide/workspace/HelloWorld/src/EventsContacts.cpp:11)
../src/EventsContacts.cpp:56: undefined identifier 'iContactId'
这样看是很明显的重定义 但是不知道是哪个文件把自己的东西定义了 找了好久也没有解决问题
看哪个头文件也不是多余的啊 真是不知道是什么问题
最后发现要将头文件#include <cntdbobs.h>去掉 这样俩个头文件里面定义的东西才不能冲突因为今天没有时间写响应的代码了不知道哪个头文件该去掉 但是发现头文件不是都需要的 即使你发现哪个有用也不一定要加上 呵呵
整个教训了
相关文章推荐
- 关于监听联系人变化的问题与解决方法探讨
- 关于Android原生集成5+webview,监听webview返回时,执行两次onkey方法问题的解决
- Android开发中关于如何解决Fragment中弹出键盘会把底部菜单栏顶上去的问题以及返回键的监听问题
- android 关于软键盘的显示和隐藏监听,解决挡住Editview的问题
- 关于Sql Server2000 1433端口本地不监听问题的解决
- 关于outlook 2000自定义通讯录问题解决方法
- 解决关于EditText输入框监听回车键enter时光标焦点不稳定问题
- 关于v4包的Fragment过渡动画的事件监听无响应问题解决
- 关于IBM Ration Function Tester中DEBUG报异常问题的解决
- 关于chrome浏览器-webkit-autofil覆盖input样式问题解决方案
- 关于ORA-00257问题的解决(归档程序错误)
- 关于flash跨域问题的解决办法
- oracle 关于无监听程序的解决办法
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示的问题的解决办法
- 关于:使用JSP+Servlet重定向网页导致CSS等失效的问题的解决
- 关于 win10 cpu 安装 anaconda navigator 打开闪退问题 解决方法
- 关于VNC显示不正常的问题的解决
- 关于八数码问题中的状态判重的三种解决方法(编码、hash、<set>)
- 【关于TABLE函数的SQL优化】解决CBO对TABLE函数基数估算导致的性能问题
- 关于SLF4J: Failed to load class的问题及解决(博客开篇)