Windows Mobile 获取SIM卡联系人信息

 

Windows Mobile上联系人的信息可分别存储在手机和SIM卡中。我尝试过从手机,即所谓的Outlook联系人中读取联系人的信息,但是还没有尝试过从sim卡中读取联系人的信息,心里也一直默认为难吧。今天查了一下,发现竟然这么简单,相比outlook的读取方式来说,简单很多。

我们先来定义个结构

typedef struct {
  TCHAR szName[32];
  TCHAR szTelNum[32];
}CONTACTSTRUCT;

要使用SIM的相关文件,需要包含头文件 simmgr.h

首先要初始化一下
HSIM lphSim;   
 HRESULT hr = SimInitialize(0, NULL, 0, &lphSim); 
if(FAILED(hr))   
 {
  return;
 }

其次获取总共使用的多少条记录与总共可以容纳的记录条数   
 DWORD dwUsed,dwTotal;   
 hr = SimGetPhonebookStatus(lphSim, SIM_PBSTORAGE_SIM, &dwUsed, &dwTotal);

然后我们读取联系人的信息
定义一个
std::vector<CONTACTSTRUCT> vContact;

 for(int i=0; i<dwTotal; i++)       
 {
  //对结构初始话以下   
  SIMPHONEBOOKENTRY phoneent;   
  memset(&phoneent,0,sizeof(phoneent));   
  phoneent.cbSize = sizeof(phoneent);

  if (SUCCEEDED(SimReadPhonebookEntry(lphSim, SIM_PBSTORAGE_SIM, i+1, &phoneent)))
  {
   CONTACTSTRUCT tempContact = {0};

   wcsncpy(tempContact.szName, phoneent.lpszText, 31); // 姓名
   wcsncpy(tempContact.szTelNum, phoneent.lpszAddress, 31); // 电话

   vContact.push_back(tempContact );
  }
 }

 //最后别忘了清理       
 SimDeinitialize(lphSim);
 lphSim = NULL;

这里读取的时候用了dwTotal,是因为听有经验的人说,sim卡的存储可能不连续,如果用dwUsed的话,可能会有问题。

积累一下,有时间再好好看一下outlook联系人的。

参考文章:
Pocket 中获取SIM卡中联系人信息
http://blog.csdn.net/xulg1984/archive/2008/05/30/2497712.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值