区分当前用户SIM卡是移动还是联通

背景知识
国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。IMSI由MCC、MNC、MSIN组成,其中MCC为移动国家号码,由3位数字组成,唯一地识别移动客户所属的国家,我国为460;MNC为网络id,由2位数字组成,用于识别移动客户所归属的移动网络,中国移动为00,中国联通为01;MSIN为移动客户识别码,采用等长11位数字构成。唯一地识别国内GSM移动通信网中移动客户。所以要区分是移动还是联通,只需取得SIM卡中的MNC字段即可,在S60 2nd和3rd上都提供这样的api。
// TelephonyAO.h
#include <e32base.h>
#include <Etel3rdParty.h>
 
class CTelephonyAO : public CActive
{
public:
 static CTelephonyAO* NewL();
        void GetNetWorkId(TDes& aNetworkId);
 
public:
 ~CTelephonyAO();
 
protected:
 void DoCancel();
 void RunL();
 
private:
 CTelephonyAO();
 void ConstructL();
 
 void GetNetWorkInfo();
 
private:
 CTelephony* pTelephony_;
 
 CTelephony::TCancellationRequest cancelRequest_;
 CTelephony::TNetworkInfoV1 networkInfo_;
 CTelephony::TNetworkInfoV1Pckg networkInfoPkg_;
};
#endif
// TelephonyAO.cpp
#include "TelephonyAO.h"
 
CTelephonyAO::CTelephonyAO() : CActive(EPriorityStandard), networkInfoPkg_(networkInfo_)
{
 CActiveScheduler::Add(this);
}
 
CTelephonyAO::~CTelephonyAO()
{
 delete pTelephony_;
}
 
void CTelephonyAO::ConstructL()
{
 pTelephony_ = CTelephony::NewL();
}
 
CTelephonyAO* CTelephonyAO::NewL()
{
 CTelephonyAO* pSelf = new(ELeave) CTelephonyAO;
 CleanupStack::PushL(pSelf);
 pSelf->ConstructL();
 CleanupStack::Pop();
 return pSelf;
}
 
void CTelephonyAO::RunL()
{
 CActiveScheduler::Stop();
}
 
void CTelephonyAO::DoCancel()
{
 pTelephony_->CancelAsync(cancelRequest_);
}
 
void CTelephonyAO::GetNetWorkInfo()
{
 Cancel();
 cancelRequest_ = CTelephony::EGetCurrentNetworkInfoCancel;
 pTelephony_->GetCurrentNetworkInfo(iStatus, networkInfoPkg_);
 SetActive();
 CActiveScheduler::Start();
}
 
void CTelephonyAO::GetNetWorkId(TDes& aNetworkId)
{
 GetNetWorkInfo();
 aNetworkId = networkInfo_.iNetworkId;
}
使用(N70测试通过):
TBuf<4> networkId;
 
CTelephonyAO* pTelephony = CTelephonyAO::NewL();
CleanupStack::PushL(pTelephony);
pTelephony->GetNetWorkId(networkId);
CleanupStack::PopAndDestroy(pTelephony);
// 下面通过判断networkId是01还是00即可区分移动和联通
Related Wiki Articles
No related wiki articles found

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值