您的位置:首页 > 其它

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>去掉 这样俩个头文件里面定义的东西才不能冲突因为今天没有时间写响应的代码了不知道哪个头文件该去掉 但是发现头文件不是都需要的 即使你发现哪个有用也不一定要加上 呵呵

整个教训了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: