NullPointerException при проверке состояния сети на устройствах Samsung

Я выпустил свое приложение в Play Store и использую следующий метод для проверки состояния сети:

public class TestInternetConnection {

    public boolean checkInternetConnection(Context context) {

         ConnectivityManager con_manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

         if (con_manager.getActiveNetworkInfo() != null && con_manager.getActiveNetworkInfo().isAvailable() && con_manager.getActiveNetworkInfo().isConnected()) {
            return true;
        } else {
            return false;
        }
    }
}

В консоли Google Play я вижу, что при вызове устройства Samsung происходит сбой checkInternetConnection метод с Nullpointerexception, В чем проблема? На моих устройствах и других все работает просто отлично.

Трассировки стека:

java.lang.NullPointerException: 
      at de.name.app.TestInternetConnection.checkInternetConnection (TestInternetConnection.java)
      at de.name.app.SubstitutionInfoFragment$2.run (SubstitutionInfoFragment.java)
      at java.lang.Thread.run (Thread.java:762)

2 ответа

Решение

Вы должны изменить свою функцию, как это прекрасно работает для меня на всех устройствах. Просто добавьте нулевую проверку контекста, прежде чем продолжить.

public static boolean checkInternetConnection(Context context) {
    // Add a null check before you proceed
    if (context == null) return false;

    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = cm.getActiveNetworkInfo();
    return info != null && info.isConnected();
}

Ответ Реаза Муршеда должен решить вашу непосредственную проблему, но, прежде чем сделать это, я думаю, вы должны пройти трассировку стека и выяснить, где именно ваше приложение передает null контекст для checkInternetConnection, Вот где реальный источник ошибки.

Другие вопросы по тегам