×
Namespaces

Variants
Actions

Получение IMSI в Symbian 3-й редакции - синхронный метод

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Пример кода
Исходный файл: Media:ReadIMSI.zip

Статья
Перевод:
truf
Последнее редактирование: 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);
}


Для использования этого кода, выполните следующие шаги:
  1. Создайте простое приложение "Hello World" с помощью шаблонов.
  2. Поместите файл IMSIApp.h в папку inc проекта.
  3. Поместите файл IMSIApp.cpp в папку src проекта.
  4. Откройте mmp файл проекта и добавьте строку SOURCE IMSIApp.cpp.
  5. Откройте mmp файл проекта и добавьте строку LIBRARY etel3rdparty.lib.
  6. Теперь добавьте следующий заголовочный файл в ваш класс (например, в файл: CYrAppUi.h): #include "IMSIApp.h".
  7. Откройте файл 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:)
[show details]
This page was last modified on 9 December 2011, at 04:17.
73 page views in the last 30 days.
×