Получение IMEI в Symbian 3-й редакции - синхронный метод
Метаданные
Пример кода
Исходный файл: Media:ReadIMEI.zip
Статья
Перевод:
Последнее редактирование: hamishwillee
(09 Dec 2011)
IMEI означает "International Mobile Equipment Identity" ("Международный Идентификатор Мобильного Оборудования"). Необходимость в получении номера IMEI телефона возникает достаточно часто. В основном это связано с механизмом лицензирования в коммерческих приложениях.
Contents |
IMEIApp.h
#include <e32base.h>
#include <Etel3rdParty.h>
class CIMEIApp : public CActive
{
private:
void ConstructL();
CTelephony* iTelephony;
CTelephony::TPhoneIdV1 iPhoneIdV1;
public:
CIMEIApp(TDes& aIMEI);
~CIMEIApp();
static void GetIMEI(TDes& aIMEI);
TDes& IMEI;
private:
/*
Далее следуют виртуальные методы класса CActive,
которые ДОЛЖНЫ быть реализованы всеми активными объектами
*/
void RunL();
void DoCancel();
};
IMEIApp.cpp
#include "IMEIApp.h"
void CIMEIApp::GetIMEI(TDes& aIMEI)
{
CIMEIApp* self= new (ELeave) CIMEIApp(aIMEI);
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::PopAndDestroy(self);
}
void CIMEIApp::ConstructL()
{
iTelephony = CTelephony::NewL();
CActiveScheduler::Add(this);
CTelephony::TPhoneIdV1Pckg iPhoneIdV1Pckg(iPhoneIdV1);
iTelephony->GetPhoneId(iStatus, iPhoneIdV1Pckg);
SetActive();
CActiveScheduler::Start();
}
CIMEIApp:: CIMEIApp(TDes& imei): CActive(EPriorityStandard),IMEI(imei)
{
//конструктор по-умолчанию
}
CIMEIApp::~CIMEIApp()
{
delete iTelephony;
iTelephony = NULL;
}
void CIMEIApp::RunL()
{
if(iStatus==KErrNone)
{
IMEI= iPhoneIdV1.iSerialNumber;
CActiveScheduler::Stop();
}
}
void CIMEIApp::DoCancel()
{
iTelephony->CancelAsync(CTelephony::EGetPhoneIdCancel);
}
Для использования этого кода, выполните следующие шаги:
- Создайте простое приложение "Hello World" с помощью шаблонов.
- Поместите файл IMEIApp.h в папку inc проекта.
- Поместите файл IMEIApp.cpp в папку src проекта.
- Откройте .mmp файл проекта и добавьте строку SOURCE IMEIApp.cpp.
- Откройте .mmp файл проекта и добавьте строку LIBRARY etel3rdparty.lib.
- Теперь добавьте следующий заголовочный файл в ваш класс:
#include "IMEIApp.h". Например в файл: "CYrAppUi.h" - Теперь вы можете вызывать статическую функцию из обработчика комманд вашего приложения.
Например:
case EReadIMEICommand1:
{
TBuf<25> iIMEI;
CIMEIApp::GetIMEI(iIMEI);
CAknInformationNote* informationNote = new (ELeave) CAknInformationNote;
informationNote->ExecuteLD(iIMEI);
}
Вы можете скачать демонстрационный проект здесь.
Внутренние ссылки
Ссылки
- Get the IMEI, IMSI, CellId etc., synchronously on 3.x devices (Blog no longer available, content reproduced below:)


(no comments yet)