1.电话簿APPLET中的变量
IVectorModel *m_contact_iv; //local contacts 此变量又指向全局变量g_contact_iv
IVectorModel *m_contact_iv_ruim; //sim contacts

2.其他辅助变量
Pbk_TotaCidCount
Pbkciddata
Pbknumcompare
g_email_iv

二、初始化电话簿的函数:
PhoneBookInitIndex(); 初始化本机记录
PhoneBookInitUimIndex(); 初始化UIM卡记录


三、分析
1
BREW按分类来管理电话簿,又分为AEE类别和OEM类别。其对应关系键变量:g_mixCat[]
获取电话簿记录时,按照AEE记录来列举,每个记录有N笔记录。例如:
IADDRBOOK_EnumRecInit(piAddrBook, g_mixCat[i].addrCat, AEE_ADDRFIELD_NONE, NULL, 0) ; 列举一个AEE类别的记录
addrRec = IADDRBOOK_EnumNextRec(piAddrBook); 循环获取该类别里的每一个记录

2.在获取到一笔记录时,加入到接口g_contact_iv中.
按照保存在该笔记录信息中的head.indexx[]中的拼音顺序寻找插入位置。

3.每一笔记录中变量的含义:
typedef struct _ContactInfo
{
COM_HEAD head; //name & phone or email 姓名,号码,拼音
uint16 m_id; // Database ID of this contact 此笔记录在电话簿接口中的AEE某一类别中的base ID(在BREW层面的)
AEEAddrCat m_class; // Contact classification, one of 与AEE类别相对应的,在OEM层来说的类别。对应关系见g_mixCat[]中
uint16 m_fldNumberId; // field id of the found number 第一个获取到的电话号码类别(手机?家庭?公司?)
}ContactInfo;


4.
Pbk_TotaCidCount----所有的电话号码个数(手机,家庭,公司等号码都算作一个)

Pbkciddata---按照该记录在g_contact_iv[]中的位置排序的数据
typedef struct _PbkCidInitStr
{
uint16 recid; 此笔数据在g_contact_iv中的pos位置
uint16 numtype; 号码的AEE类别(手机?家庭?公司?)
AECHAR numstr[FLDLEN_NUMBER+1]; 号码
}PBKCidInitStr;

Pbknumcompare---按照号码的大小顺序排序的数据结构
typedef struct _PBKNumCompare
{
uint16 idInPbm; // the id can get name directly 此笔记录在电话簿接口中的AEE某一类别中的base ID(在BREW层面的)
uint8 charnum[FLDLEN_NUMBER+1]; 号码
}PBKNumCompare;
g_email_iv—邮件地址的接口,每个节点包含2个信息:该邮件在AEE层的base ID,以及邮件地址。