Tesis 1.0.0
Loading...
Searching...
No Matches
NetworkUtils.java
Go to the documentation of this file.
1package com.example.food_front.utils;
2
3import android.content.Context;
4import android.net.ConnectivityManager;
5import android.net.Network;
6import android.net.NetworkCapabilities;
7import android.net.NetworkInfo;
8import android.os.Build;
9import android.util.Log;
10
11import java.io.IOException;
12import java.net.HttpURLConnection;
13import java.net.URL;
14import java.util.concurrent.Callable;
15import java.util.concurrent.ExecutorService;
16import java.util.concurrent.Executors;
17import java.util.concurrent.Future;
18import java.util.concurrent.TimeUnit;
19
23public class NetworkUtils {
24
25 private static final String TAG = "NetworkUtils";
26
32 public static boolean isNetworkAvailable(Context context) {
33 if (context == null) return false;
34
35 ConnectivityManager connectivityManager = (ConnectivityManager)
36 context.getSystemService(Context.CONNECTIVITY_SERVICE);
37
38 if (connectivityManager == null) return false;
39
40 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
41 Network network = connectivityManager.getActiveNetwork();
42 if (network == null) return false;
43
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));
50 } else {
51 NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
52 return networkInfo != null && networkInfo.isConnected();
53 }
54 }
55
60 public static boolean canReachMercadoPagoServer() {
61 return checkUrlAvailability("https://backmp.onrender.com", 5000);
62 }
63
70 public static boolean checkUrlAvailability(final String urlString, int timeout) {
71 ExecutorService executor = Executors.newSingleThreadExecutor();
72 Future<Boolean> future = executor.submit(new Callable<Boolean>() {
73 @Override
74 public Boolean call() {
75 try {
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);
86 return false;
87 }
88 }
89 });
90
91 try {
92 return future.get(timeout + 500, TimeUnit.MILLISECONDS);
93 } catch (Exception e) {
94 Log.e(TAG, "Timeout al verificar disponibilidad de " + urlString, e);
95 future.cancel(true);
96 return false;
97 } finally {
98 executor.shutdownNow();
99 }
100 }
101}
static boolean checkUrlAvailability(final String urlString, int timeout)
static boolean isNetworkAvailable(Context context)