Intereting Posts
Как синхронизировать большие списки между клиентом и сервером Изменение шрифта текста табуляции в поддержку дизайна Android. TabLayout Анимация изменения цвета фона фонового изображения на Android Как передавать mp3-url с помощью exoplayer? Android: выберите изображение из галереи, затем обведите его и покажите в изображении Добавить несколько карт ClusterManager в Google Что конкретно делает аннотация Android @hide? Android Как правильно получить значение с коммутатора? Вставка значения null в качестве значения Integer в базу данных Андроидный запрос пользователя с помощью диалога Glide – добавление заголовка для запроса Android-opencv конвертирует мат в оттенки серого с использованием matToBitmap / bitmapToMat Не удалось найти com.google.android.gms: play-services: 5.0.77 Android-эмулятор не устанавливает приложение при использовании команды «ионный эмулятор андроида» Как реализовать наследование таблицы в GreenDao

Исключение null null указателя connectivityManager getActiveNetworkInfo

Иногда я вижу исключение исключения указателя в диспетчере подключений. Из сервиса намерения я проверяю состояние сети по isOnWIFI (это). Исключение происходит в строке cm.getActiveNetworkInfo (). Это странно, потому что я проверяю значение null, пока не назову это. Примечание. Разрешения установлены.

public static boolean isOnWIFI(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); return cm != null //here occurs NullPointerException && cm.getActiveNetworkInfo() != null && ((cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null && cm.getNetworkInfo( ConnectivityManager.TYPE_WIFI).isConnected())); } 

Любые мысли, почему это происходит? Я не могу отлаживать его, потому что это только случайные сообщения об ошибках. Единственное решение, которое я вижу, – это поместить его в блок catch try. Благодарю.

Вы проверяли api в том, что они упоминаются, если нет активных подключений, которые они просто возвращают null, я думаю, что это проблема с ур.

http://developer.android.com/reference/android/net/ConnectivityManager.html #getActiveNetworkInfo ()

Android_dev прав. Проблема в вашем коде происходит из cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()));

Да! Вы проверяете cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null раньше, но второй раз вызываете getNetworkInfo() , android отправляется и извлекает информацию о сети второй раз, только на этот раз он не встречает активную сеть, возвращающую нулевую вторую секунду время. Дело не в том, что getNetworkInfo() вы вызывали getNetworkInfo() миллисекунду и не получали нуль, значит, вы не получите миллисекунды после

 Try this. Read more here 

http://developer.android.com/training/basics/network-ops/managing.html

 public static boolean isOnWIFI(Context context) { ConnectivityManager cm = (ConnectivityManager) this.getSystemService(context.CONNECTIVITY_SERVICE); if(cm != null){ NetworkInfo networkInfo = cm.getActiveNetworkInfo(); boolean isWiFi = networkInfo.getType() == ConnectivityManager.TYPE_WIFI; // if user is connected to network if (isWifi) { return true; }else { return false; } } else{ //cm is null return false } } 

Когда я работал с сервисами, это решило мою проблему. До того, как я просто использовал! Info.isConnected (), но этого было недостаточно

  ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); NetworkInfo info = cm.getActiveNetworkInfo(); if(info==null || !info.isConnected()) { stopSelf(); return; } 

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

 NetworkInfo WiFiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo mobileInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

Затем проверьте, доступны ли они

 if(mobileInfo != null & mobileInfo.isConnectedOrConnecting() || WiFiInfo != null & WiFiInfo.isConnectedOrConnecting()) { //do your task here } else { //show an alert dialog or something } 

Я просто создал один шаблон с такой проблемой, теперь он работает хорошо. Вы можете попробовать этот код, я попробовал его на многих устройствах, и проблем нет. getActiveNetworkInfo() . Прежде чем я попытался getAllNetworkInfo() и я не понимаю, что не так, но getAllNetworkInfo() работает глупо на некоторых устройствах.