如何获取IMSI号?
我用下面代码获取IMSI号,返回-46,会是什么原因呢?
#include <Etel3rdParty.h>
class MImsiObserver
{
public:
// New methods
virtual void GotIMSIL(const TDesC& aIMSI, TInt aError) = 0;
};
class CImsiReader : public CActive
{
public:
static CImsiReader* NewL(MImsiObserver& aObserver);
static CImsiReader* NewLC(MImsiObserver& aObserver);
~CImsiReader();
protected:
void DoCancel();
void RunL();
private:
CImsiReader(MImsiObserver& aObserver);
void ConstructL(void);
public:
void StartReading(void);
private:
MImsiObserver& iObserver;
CTelephony* iTelephony;
CTelephony::TSubscriberIdV1 iImsiV1;
CTelephony::TSubscriberIdV1Pckg iImsiV1Pkg;
};
#include "ImsiReader.h"
CImsiReader* CImsiReader::NewL(MImsiObserver& aObserver)
{
CImsiReader* self = NewLC(aObserver);
CleanupStack::Pop(self);
return self;
}
CImsiReader* CImsiReader::NewLC(MImsiObserver& aObserver)
{
CImsiReader* self = new (ELeave) CImsiReader(aObserver);
CleanupStack::PushL(self);
self->ConstructL();
return self;
}
CImsiReader::CImsiReader(MImsiObserver& aObserver) :
CActive(0), iObserver(aObserver), iImsiV1Pkg(iImsiV1)
{
}
CImsiReader::~CImsiReader()
{
Cancel();
delete iTelephony;
}
void CImsiReader::ConstructL(void)
{
CActiveScheduler::Add(this);
iTelephony = CTelephony::NewL();
}
void CImsiReader::StartReading(void)
{
iTelephony->GetSubscriberId(iStatus, iImsiV1Pkg);
SetActive();
}
void CImsiReader::DoCancel()
{
iTelephony->CancelAsync(CTelephony::EGetSubscriberIdCancel);
}
void CImsiReader::RunL()
{
//LP: added ";" and replaced iTelephony with iObserver
iObserver.GotIMSIL(iImsiV1.iSubscriberId, iStatus.Int());
}
这代码我是在诺基亚论坛下下来的,很奇怪的是在那里下载的例子可以正常获取,我新建一个工程把代码移过来就取不到,什么都没动。代码在这:http://wiki.forum.nokia.com/index.php/Reading_IMSI_in_3rd_Edition
哪位大大给点意见吗?能力我都加上了