Я разработал одно приложение для 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, он показывает ошибку и приложение сбой.
Помогите мне.
Вы получаете сообщение об ошибке, потому что
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;
}
Надеюсь, что это поможет.