Мое приложение - это приложение в режиме киоска (если пользователь не введет код, он не сможет получить доступ ни к каким приложениям Android).Поэтому, когда вкладка загружается, в сервисе необходимо выполнить некоторые настройки.Я использую приведенный ниже код для проверки сетевого подключения (этот код повторно используется как часть служебного класса в моей работе).Если есть доступная сеть, мне нужно выполнить команду, иначе должно быть запущено событие.
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
В Android 7 этот код работает без нареканий.При загрузке, поскольку есть SIM-карта и доступно сетевое подключение, я могу выполнить команду.
Но в Android 6, даже когда есть доступность сети, код всегда возвращается не подключенным / OFFLINE.Это происходит при загрузке устройства.Но подключение возвращается true после запуска приложения.
Внутренне ConnectivityManager.activeNetworkInfo основан на BroadcastReceiver с IntentFilter ConnectivityManager.CONNECTIVITY_ACTION.Из журналов видно, что CONNECTIVITY_ACTION регистрируется во время установки приложения, но этого не происходит при загрузке устройства.
Я попытался проверить сетевое подключение для класса, расширяющего Application, но этотакже не работает - думая, что проверка сообщит приложению при запуске о наличии сетевого подключения.