读取sim的 imsi号问题,附代码
我想判断手机中是否有sim卡,所以希望通过读取sim卡的imsi号来判断,下面是我使用的代码,
#ifndef MYTELEPHONY_H
#define MYTELEPHONY_H
#include <e32base.h>
#include <Etel3rdParty.h>
class CMyTelephony : public CActive
{
public:
static void GetIMEIL(TDes& aIMEI);
protected:
void DoCancel();
void RunL();
private:
static CMyTelephony* NewLC();
static CMyTelephony* NewL();
~CMyTelephony();
CMyTelephony();
void ConstructL();
void GetPhoneId();
private:
CTelephony* iTelephony;
CTelephony::TCancellationRequest iRequest;
CTelephony::TPhoneIdV1 iPhoneIdV1;
CTelephony::TPhoneIdV1Pckg iPhoneIdV1Pckg;
};
#endif // MYTELEPHONY_H
// MyTelephony.cpp
//
#include <e32svr.h>
#include "MyTelephony.h"
CMyTelephony* CMyTelephony::NewLC()
{
CMyTelephony* self = new (ELeave) CMyTelephony;
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CMyTelephony* CMyTelephony::NewL()
{
CMyTelephony* self = CMyTelephony::NewLC();
CleanupStack::Pop(self);
return self;
}
void CMyTelephony::GetIMEIL(TDes& aIMEI)
{
#ifdef _DEBUG
_LIT(KDebugIMEI, "004601018693425");
aIMEI = KDebugIMEI;
#else
CMyTelephony* telephony = CMyTelephony::NewL();
telephony->GetPhoneId();
aIMEI = telephony->iPhoneIdV1.iSerialNumber;
delete telephony;
#endif
}
void CMyTelephony:oCancel()
{
iTelephony->CancelAsync(iRequest);
}
void CMyTelephony::RunL()
{
CActiveScheduler::Stop();
}
CMyTelephony::~CMyTelephony()
{
delete iTelephony;
}
CMyTelephony::CMyTelephony() : CActive(CActive::EPriorityStandard), iPhoneIdV1Pckg(iPhoneIdV1)
{
CActiveScheduler::Add(this);
}
void CMyTelephony::ConstructL()
{
iTelephony = CTelephony::NewL();
}
void CMyTelephony::GetPhoneId()
{
Cancel();
iRequest = CTelephony::EGetPhoneIdCancel;
iTelephony->GetPhoneId(iStatus, iPhoneIdV1Pckg);
SetActive();
CActiveScheduler::Start();
}
红色部分注释之后在,代码在模拟器上运行读出的imsi号是15个0,但该代码在手机(e50,n73)上运行都没有读出任何内容,无论有没有sim卡都是,为什么呢?