×
Namespaces

Variants
Actions

Получение активной точки доступа

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

Совместимость
Платформа(ы):
Symbian

Статья
Перевод:
A.A.M.
Последнее редактирование: hamishwillee (08 May 2013)

Перевод с английского, оригинальная статья находится здесь.


Обзор

Возникают ситуации, в которых система предлагает пользователю выбрать точку доступа для дальнейшего подключения к сети. В таком случае система показывает системный диалог со списком точек доступа. Это может происходить, например, при попытке загрузить файл с использованием Download Manager API или открыть URL через Browser Control API. Но если пользователь уже подключен через какую-либо точку доступа, то есть возможность использовать ее без повторного показа диалога для выбора. Рассмотрим как получить активную точку доступа.

Реализация

Класс MConnectionMonitorObserver позволяет получать уведомления об установке/разрыве соединения, изменении доступности интернет точек доступа (IAP, internet access point) и т.п. Чтобы получать уведомления нужно:

  • 1) Унаследовать класс от MConnectionMonitorObserver и реализовать его виртуальную функцию EventL():
class CMyHTTPEngine : public MConnectionMonitorObserver
{
...
public:
// from MConnectionObserver
void EventL(const CConMonEvenBase& aConnEvent);
...
private:
RConnectionMonitor iConnMon;
};
  • 2) Зарегистрироваться для получения уведомлений о событиях до начала установки соединения:
    TInt err = iConnMon.ConnectL();
iConnMon.NotifyEventL( *this );
// …теперь можно перейти к установке HTTP соединения
  • 3) Обрабатывать полученные события с целью определить идентификатор (ID) активной точки доступа (IAP):
 CMyHTTPEngine::EventL(const CConMonEvenBase& aConnEvent)
{
TInt event = aConnEvent.EventType();
TUint connId = aConnEvent.ConnectionId();
TUint iapId;
TRequestStatus status;
switch ( event )
{
case EConnMonCreateConnection: // Создано новое соединение
{
iConnMon.GetUintAttribute(connId, 0, KIAPId, iapId, status);
 
// Имя точки доступа может быть получено при помощи функции
// GetStringAttribute(connId, 0, KIAPName, ...)
User::WaitForRequest( status );
break;
}
case EConnMonCreateSubConnection: // Создано новое суб-подключение к уже активному соединению
{
TUint subConnId;
const CConnMonCreateSubConnection
subConnEvent = (CConnMonCreateSubConnection)aConnEvent;
subConnId = subConnEvent.SubConnectionId();
iConnMon.GetUintAttribute(connId, subConnId, KIAPId, iapId, status);
// Имя точки доступа может быть получено при помощи функции
// GetStringAttribute(connId, subConnId, KIAPName, ...)
User::WaitForRequest( status );
break;
}
default:
break;
}
// Закрываем монитор событий, если он нам больше не нужен
// iConnMon.Close();
}

Такой монитор также может быть использован для уведомления о таких событиях как изменение доступности точки доступа, завершение существующего соединения, изменение статуса подключения.

This page was last modified on 8 May 2013, at 03:04.
87 page views in the last 30 days.
×