Dave Nottage поможет нам решить эту задачу. Он разработал специальный класс для определения состояния подключения к интернету, класс работает как на Android, так и на iOS.
Класс умеет:
- Определять состояние: Подключено к WIFI, мобильному интернету или вовсе не подключено.
- Определять SSID.
Upd (23.04.14). Проверил код на Delphi XE6 и добавил информацию о необходимых изменениях.
Upd (3.10.14). Проверил в Delphi XE7 и Android 4.4.2.
UPD. (18.05.17) Добавил ссылку на свою версию данного класса. Проверена на Delphi (Berlin/Tokyo) 10.* Update *
Upd (3.10.14). Проверил в Delphi XE7 и Android 4.4.2.
UPD. (18.05.17) Добавил ссылку на свою версию данного класса. Проверена на Delphi (Berlin/Tokyo) 10.* Update *
Доступные для вызова функции:
TCustomNetworkState = class(TObject) function GetSSID: String; virtual; abstract; function IsConnected: Boolean; virtual; abstract; function IsWifiConnected: Boolean; virtual; abstract; function IsMobileConnected: Boolean; virtual; abstract; end;
Для использования этого класса в своём проекте необходимо чтобы файлы ниже находились в папке вашего проекта:
- libReachability.a
- NetworkState.pas
- NetworkState.iOS.pas
- NetworkState.Android.pas
- SCNetworkReachability.pas
- CaptiveNetwork.pas
Для платформы Android необходимо также выставить права «Access Network State» и «Access Wifi State». (Где и как это сделать, читайте тут)
Dave Nottage написал демо приложение, для демонстрации возможностей класса. Ниже я привожу прямую ссылку на этот проект. Из него можно вытащить файлы класса и добавить в свой проект.
UPDATE (23.04.14):
Чтобы код заработал в Delphi XE6, необходимо:
Файл "NetworkState.Android.pas": в "uses" добавить модуль "Androidapi.Helpers".
Бекап в блоге: Network State Demo
(18.05.17) Ссылка на мой класс: https://github.com/AndrewEfimov/Android-API/tree/master/ActiveNetworkInfo
p.s. Это вольный перевод статьи Checking for an internet connection on mobile devices with Delphi XE5 (Автор: Dave Nottage)