Получение IMSI в Symbian 3-й редакции - синхронный метод
Метаданные
Пример кода
Исходный файл: Media:ReadIMSI.zip
Статья
Перевод:
Последнее редактирование: hamishwillee
(09 Dec 2011)
IMSI означает "International Mobile Subscriber Identity" ("Уникальный Международный Идентификатор Абонента").
Contents |
IMSIApp.h
#include <e32base.h>
#include <Etel3rdParty.h>
class CIMSIApp : public CActive
{
private:
void ConstructL();
CTelephony* iTelephony;
CTelephony::TSubscriberIdV1 iSubscriberIdV1;
public:
CIMSIApp(TDes& aIMSI);
static void GetIMSI(TDes& aIMSI);
TDes& IMSI;
private:
/*
Далее следуют виртуальные методы класса CActive,
которые ДОЛЖНЫ быть реализованы всеми активными объектами
*/
void RunL();
void DoCancel();
};
IMSIApp.cpp
#include "IMSIApp.h"
void CIMSIApp::GetIMSI(TDes& aIMSI)
{
CIMSIApp* self= new (ELeave) CIMSIApp(aIMSI);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::PopAndDestroy(self);
}
void CIMSIApp::ConstructL()
{
iTelephony = CTelephony::NewL();
CActiveScheduler::Add(this);
CTelephony::TSubscriberIdV1Pckg iSubscriberIdV1Pckg(iSubscriberIdV1);
iTelephony->GetSubscriberId(iStatus,iSubscriberIdV1Pckg);
SetActive();
CActiveScheduler::Start();
}
CIMSIApp:: CIMSIApp(TDes& imsi): CActive(EPriorityStandard),IMSI(imsi)
{
//конструктор по-умолчанию
}
void CIMSIApp::RunL()
{
if(iStatus==KErrNone)
{
IMSI = iSubscriberIdV1.iSubscriberId;
CActiveScheduler::Stop();
}
}
void CIMSIApp::DoCancel()
{
iTelephony->CancelAsync(CTelephony::EGetSubscriberIdCancel);
}
Для использования этого кода, выполните следующие шаги:
- Создайте простое приложение "Hello World" с помощью шаблонов.
- Поместите файл IMSIApp.h в папку inc проекта.
- Поместите файл IMSIApp.cpp в папку src проекта.
- Откройте mmp файл проекта и добавьте строку SOURCE IMSIApp.cpp.
- Откройте mmp файл проекта и добавьте строку LIBRARY etel3rdparty.lib.
- Теперь добавьте следующий заголовочный файл в ваш класс (например, в файл: CYrAppUi.h): #include "IMSIApp.h".
- Откройте файл mmp и добавьте сроку CAPABILITY ReadDeviceData.
Теперь вы можете вызывать статическую функцию из обработчика комманд вашего приложения. Например:
case EReadIMSICommand1:
{
TBuf<25> iIMSI;
CIMSIApp::GetIMSI(iIMSI);
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote->ExecuteLD(iIMSI);
}
Для того, чтобы установить ваше приложение на телефон, вы должны подписать полученный .Sis файл с помощью сертификата разработчика.
Вы можете скачать демонстрационный проект здесь.
Внутренние ссылки
Ссылки
- Get the IMEI, IMSI, CellId etc., synchronously on 3.x devices (Blog no longer available, content reproduced below:)


(no comments yet)