This page was last modified 19:14, 1 January 2008.
Получение IMSI в Symbian 3-й редакции - синхронный метод
From Forum Nokia Wiki
Перевод с английского, оригинальная статья находится здесь.
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 файл с помощью сертификата разработчика.
Вы можете скачать демонстрационный проект, созданный в MS 2003 IDE с помощью Carbide.vs здесь
Внутренние ссылки
Ссылки
- IMSI в русскоязычной Wikipedia
- Web-сервис для анализа IMSI
- DevInfo - Get the IMEI, IMSI, CellId etc., synchronously on 3.x devices.
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| how to read IMSI in S60 2nd fp3 | the_healer | General Symbian C++ | 2 | 2008-05-05 12:55 |
| can symbian app determin phone number? | steve@slicewireless | General Symbian C++ | 6 | 2006-01-25 12:51 |
| Help on series 80? | vasant21 | General Symbian C++ | 3 | 2006-08-18 12:29 |
| how to get imsi? | csh_cao | General Symbian C++ | 1 | 2005-03-07 03:09 |
| Symbian C++ and SIM Card | sinhashivam | General Symbian C++ | 4 | 2006-08-17 14:13 |
