Проблема с интернет-соединением Android

1

Я разработал одно приложение для Android, которое использует веб-службу для получения данных. это означает, что для этого требуется подключение к Интернету. Моя проблема заключается в том, что Интернет недоступен во время вызова веб-службы или перед вызовом веб-службы он должен вызывать некоторые предупреждения.

Я реализовал один код:

 public static boolean isOnline(Context context) {
        try {
        ConnectivityManager cm = (ConnectivityManager) context
        .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) {
        URL url = new URL("https://widget.istockanalyst.com/WebServiceIStock.asmx");
        HttpURLConnection urlc = (HttpURLConnection) url
        .openConnection();
        urlc.setRequestProperty("User-Agent", "My Android Demo");
        urlc.setRequestProperty("Connection", "close");
        urlc.setConnectTimeout(1000); // mTimeout is in seconds

        urlc.connect();

        if (urlc.getResponseCode() == 200)
        {
            System.out.println("*********True****************");

        return true;


        } 
        else 
        {
            System.out.println("*********False****************");   

        return false;

        }
        }
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
        return false;
        }

после чего m вызывает этот метод на моем заставке. и на эмуляторе он отвечает. но когда я выполняю тестирование устройства после завершения Wi-Fi, он показывает ошибку и приложение сбой.

Помогите мне.

  • 0
    Можете ли вы опубликовать свое сообщение Logcat?
  • 0
    Я не очень разбираюсь в разработке под Android, но держу пари, что ошибка / трассировка стека поможет тем, кто вам поможет.
Теги:

1 ответ

0

Вы получаете сообщение об ошибке, потому что

cm.getActiveNetworkInfo()

возвращает значение null, поэтому при вызове

.isConnectedOrConnecting())

генерируется исключение java.lang.NullPointerException. Лучший способ сделать это - проверить, возвращает ли getActiveNetworkInfo() значение null

        public boolean isOnline(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context
        .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting())
            return true;
        return false;
}

Надеюсь, что это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню