Code:
// MyTelephony.h//#ifndef MYTELEPHONY_H#define MYTELEPHONY_H#include <e32base.h>#include <Etel3rdParty.h>class CMyTelephony : public CActive {public: static void GetIMSIL(TDes& aIMSI);protected: void DoCancel(); void RunL(); private: static CMyTelephony* NewLC(); static CMyTelephony* NewL(); ~CMyTelephony(); CMyTelephony(); void ConstructL(); void GetSubscriberId();private: CTelephony* iTelephony; CTelephony::TCancellationRequest iRequest; CTelephony::TSubscriberIdV1 iSubscriberId; CTelephony::TSubscriberIdV1Pckg iSubscriberIdPckg; };#endif // MYTELEPHONY_H
Code:
// 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::GetIMSIL(TDes& aIMSI) {#ifdef _DEBUG _LIT(KDebugIMSI, "000000000000000"); aIMSI = KDebugIMSI;#else CMyTelephony* telephony = CMyTelephony::NewL(); telephony->GetSubscriberId(); aIMSI = telephony->iSubscriberId.iSubscriberId; delete telephony;#endif }void CMyTelephony::DoCancel() { iTelephony->CancelAsync(iRequest); }void CMyTelephony::RunL() { CActiveScheduler::Stop(); }CMyTelephony::~CMyTelephony() { delete iTelephony; }CMyTelephony::CMyTelephony() : CActive(CActive::EPriorityStandard), iSubscriberIdPckg(iSubscriberId) { CActiveScheduler::Add(this); }void CMyTelephony::ConstructL() { iTelephony = CTelephony::NewL(); }void CMyTelephony::GetSubscriberId() { Cancel(); iRequest = CTelephony::EGetSubscriberIdCancel; iTelephony->GetSubscriberId(iStatus, iSubscriberIdPckg); SetActive(); CActiveScheduler::Start(); }
How to Use: code:
#include "MyTelephony.h"...TBuf<CTelephony::KIMSISize> imsi;CMyTelephony::GetIMSIL(imsi); // synchronousCEikonEnv::Static()->InfoWinL(imsi, KNullDesC());...