33 if (context ==
null)
return false;
35 ConnectivityManager connectivityManager = (ConnectivityManager)
36 context.getSystemService(Context.CONNECTIVITY_SERVICE);
38 if (connectivityManager ==
null)
return false;
40 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
41 Network network = connectivityManager.getActiveNetwork();
42 if (network ==
null)
return false;
44 NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
45 return capabilities !=
null && (
46 capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
47 capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
48 capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) ||
49 capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN));
51 NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
52 return networkInfo !=
null && networkInfo.isConnected();
71 ExecutorService executor = Executors.newSingleThreadExecutor();
72 Future<Boolean> future = executor.submit(
new Callable<Boolean>() {
74 public Boolean call() {
76 URL url =
new URL(urlString);
77 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
78 connection.setConnectTimeout(timeout);
79 connection.setReadTimeout(timeout);
80 connection.setRequestMethod(
"HEAD");
81 int responseCode = connection.getResponseCode();
82 Log.d(TAG,
"URL " + urlString +
" devuelve código: " + responseCode);
83 return (responseCode >= 200 && responseCode < 400);
84 }
catch (IOException e) {
85 Log.e(TAG,
"Error al verificar disponibilidad de " + urlString, e);
92 return future.get(timeout + 500, TimeUnit.MILLISECONDS);
93 }
catch (Exception e) {
94 Log.e(TAG,
"Timeout al verificar disponibilidad de " + urlString, e);
98 executor.shutdownNow();