怎么获取IMSI号
如何获取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
哪位大大给点意见吗?能力我都加上了
------解决方案--------------------
Symbian OS s60 3rd编程中实现IMSI、IMEI查询
http://cache.baidu.com/c?m=9d78d513d9820af008b6c7221a16a6271d5697624cc0a06568a0905fe26e4c324471e2cb76754e5a8893682041f14606acb6746536703daacb96d51fcabbe52b2b893034074ddb1e0f9b4ff0cb4427cb3dc004b4fa04a6fca374c8ffcfd3dd5258c954037d80f288580717cf6df61e31e6ac9d55&p=857eda0086cc40ac1ebe9b794750&user=baidu&fm=sc&query=Symbian+s60%BB%F1%C8%A1cellid&qid=b17a01f90182dcb4&p1=2
我参照里面的代码成功获取到imsi和imei
------解决方案--------------------
Hi,
-46是因为应用程序少能力,你试试加上ReadDeviceData能力看看能不能解决。
如果你确认该加的能力都加到mmp里了但还是不行,那建议清一下整个工程,然后重新build。在用旧版本的Carbide.c++的时候我遇到过改了mmp但IDE不认的情况,但清一下工程就好了。
Regards
Ziteng Chen
我用下面代码获取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
哪位大大给点意见吗?能力我都加上了
------解决方案--------------------
Symbian OS s60 3rd编程中实现IMSI、IMEI查询
http://cache.baidu.com/c?m=9d78d513d9820af008b6c7221a16a6271d5697624cc0a06568a0905fe26e4c324471e2cb76754e5a8893682041f14606acb6746536703daacb96d51fcabbe52b2b893034074ddb1e0f9b4ff0cb4427cb3dc004b4fa04a6fca374c8ffcfd3dd5258c954037d80f288580717cf6df61e31e6ac9d55&p=857eda0086cc40ac1ebe9b794750&user=baidu&fm=sc&query=Symbian+s60%BB%F1%C8%A1cellid&qid=b17a01f90182dcb4&p1=2
我参照里面的代码成功获取到imsi和imei
------解决方案--------------------
Hi,
-46是因为应用程序少能力,你试试加上ReadDeviceData能力看看能不能解决。
如果你确认该加的能力都加到mmp里了但还是不行,那建议清一下整个工程,然后重新build。在用旧版本的Carbide.c++的时候我遇到过改了mmp但IDE不认的情况,但清一下工程就好了。
Regards
Ziteng Chen