This page was last modified 19:13, 1 January 2008.
Получение IMEI в Symbian 3-й редакции - синхронный метод
From Forum Nokia Wiki
Перевод с английского, оригинальная статья находится здесь.
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);
}
Вы можете скачать демонстрационный проект, созданный в MS 2003 IDE с помощью Carbide.vs здесь.
Внутренние ссылки
Ссылки
- IMEI в русскоязычной Wikipedia
- Web-сервис для анализа IMEI
- DevInfo - Get the IMEI, IMSI, CellId etc., synchronously on 3.x devices.
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| how to get phone information? | sumn79 | General Symbian C++ | 2 | 2004-03-09 12:46 |
| I type*#06# for IMEI, N71 sees *as text | kiwited | General Symbian C++ | 1 | 2006-06-21 16:10 |
| IMEI numbers | Zhadnost | General Discussion | 4 | 2005-12-07 14:19 |
| IMEI and device features | sandysrivastava | General Discussion | 2 | 2005-05-03 10:57 |
| DBMS and Ensymble | aldosilva | Python | 16 | 2008-05-27 08:32 |
