Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Como obter o estado atual de roaming e receber notificação sobre a mudança de rede

From Wiki
Jump to: navigation, search
Article Metadata

Platform Security
Tipo de assinatura requerido: DevCert or Symbian Signed
Capabilities: ReadDeviceData

Artigo
Tradução:
Por thiagobrunoms
Última alteração feita por hamishwillee em 18 Dec 2011

O objetivo deste artigo é descobrir se o cartão SIM está em roaming ou na rede doméstica e receber notificação sobre cada mudança de rede. A aplicação deve ser "Symbian Signed", pois exige a utilização do ReadDeviceData. O programador deve usar um active object pois as chamadas são assíncronas. Abaixo está um exemplo de uma classe que recupera o status de registro por solicitação.

Cabeçalho necessário:

#include<etel3rdparty.h>

Biblioteca necessária:

LIBRARY  etel3rdparty.lib

NetRegister.h

#ifndef CNETREGISTER_H__
#define CNETREGISTER_H__
 
#include <Etel3rdParty.h>
 
//Enumeration para ter maior controle nas informações de status de registro inicial ou notificação de mudança de rede.
enum TNetStatus
{
EOperationNone,
ENetworkInitialRegInfo,
ENetworkChangeRegInfo
};
 
class CNetRegister : public CActive
{
 
public:
 
// construtor e destrutor estáticos
static CNetRegister* NewL();
~CNetRegister();
 
public:
 
void IssueRequest();
void GetNetworkRegistration();
 
protected: // de CActive
virtual void DoCancel();
virtual void RunL();
 
private: // construtores privados
 
CNetRegister();
void ConstructL();
 
private: // dados
CTelephony* iTelephony;
CTelephony::TNetworkRegistrationV1 iNetworkRegistrationV1;
CTelephony::TNetworkRegistrationV1Pckg iNetworkRegistrationV1Pckg;
TNetStatus iNetStatus;
};
 
#endif CNETREGISTER_H__

NetRegister.cpp

#include "NetRegister.h"
 
CNetRegister* CNetRegister::NewL()
{
CNetRegister* self = new (ELeave) CNetRegister();
CleanupStack::PushL(self);
self->ConstructL();
CleanupStack::Pop(); // self
return self;
}
 
 
CNetRegister::CNetRegister(): CActive(EPriorityHigh),iNetworkRegistrationV1Pckg(iNetworkRegistrationV1)
{
 
}
 
 
void CNetRegister::ConstructL()
{
iTelephony = CTelephony::NewL();
CActiveScheduler::Add(this);
GetNetworkRegistration();
}
 
 
CNetRegister::~CNetRegister()
{
Cancel();
delete iTelephony;
}
 
 
void CNetRegister::RunL()
{
if( iStatus == KErrNone )
{
switch(iNetStatus)
{
//Network registration changed notification.
case ENetworkChangeRegInfo:
{
CTelephony::TRegistrationStatus regStatus = iNetworkRegistrationV1.iRegStatus;
if(regStatus==CTelephony::ERegisteredRoaming)
{
//Rede alterada para Roaming
}
else if(regStatus==CTelephony::ERegisteredOnHomeNetwork)
{
//Rede alterada para Home network
}
}
break;
//Status inicial de registro de rede. Realiza pela primeira vez o status da rede tal como salvar os dados da rede etc.....
case ENetworkInitialRegInfo:
{
CTelephony::TRegistrationStatus regStatus = iNetworkRegistrationV1.iRegStatus;
if(regStatus==CTelephony::ERegisteredRoaming)
{
//Inicialmente no modo Roaming
}
else if(regStatus==CTelephony::ERegisteredOnHomeNetwork)
{
//Inicialmente no modo Home network
}
}
break;
default:
break;
}
 
}
else
{
// Captura erros
}
IssueRequest();
}
 
 
void CNetRegister::DoCancel()
{
iTelephony->CancelAsync(CTelephony::ENetworkRegistrationStatusChangeCancel);
iTelephony->CancelAsync(CTelephony::EGetNetworkRegistrationStatusCancel);
}
 
 
void CNetRegister::IssueRequest()
{
iNetStatus = ENetworkChangeRegInfo;
iTelephony->NotifyChange( iStatus,
CTelephony::ENetworkRegistrationStatusChange,
iNetworkRegistrationV1Pckg);
SetActive();
}
 
void CNetRegister::GetNetworkRegistration()
{
iNetStatus = ENetworkInitialRegInfo;
iTelephony->GetNetworkRegistrationStatus(iStatus, iNetworkRegistrationV1Pckg);
SetActive();
}

Links relacionados

This page was last modified on 18 December 2011, at 23:00.
178 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×