Добрый день, я разрабатываю приложение для Android, где я отправляю E-Mail, когда пользователь нажимает на определенную активность в моем приложении. Я могу правильно отправлять E-Mail, используя AsyncTask. Тем не менее, я хочу убедиться, что пользователь действительно находится в сети, когда это происходит.Android - включение функции обратного вызова WiFi?
Я также знаю, что я могу программно включить Wi-Fi, как, например:
WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
boolean wifiEnabled = wifiManager.isWifiEnabled();
if(!wifiEnabled){
wifiManager.setWifiEnabled(true);
}
//I can then do my async task here
Однако, это требует времени для Android, чтобы подключиться к сети и установить соединение. Поэтому, когда асинхронная задача выходит из строя, потому что устройство отключено.
Теперь мои вопросы:
Есть ли способ для приложения, чтобы знать, если WiFi уже подключен без использования радиоприемников? Я знаю, что я могу использовать широковещательные приемники, чтобы проверить, подключено ли устройство уже. Однако, я думаю, что это слишком громоздко для моих целей. Я ищу что-то вроде функции обратного вызова, аналогичной тем, которые используются в инфраструктурах ExtJS при синхронизации записей в хранилище/базе данных.
Если в Android нет функции обратного вызова, возможно ли, чтобы широковещательный приемник вызывал функцию вашего приложения только при активном приложении? Я имею в виду, что я хочу, чтобы мой широковещательный приемник вызывал функцию (функция отправки электронной почты) в моей деятельности только тогда, когда мое приложение активно. Я не хочу, чтобы он вызывал эту функцию всякий раз, когда изменяется состояние WiFi.