Мне нужно определить, доступно ли подключение к Интернету и нормально ли работает в Android. Мне нужно, чтобы эта проверка условия вызывалась до того, как я начну любое из своих действий WebView.
До сих пор мне удалось реализовать функцию isAvailable(), найденную в этом ответе: Класс, который проверяет возможность подключения
Однако описанный выше метод не работает, если Wi-Fi включен, но разъем Ethernet НЕ подключен. Некоторые говорят, что использование ping — хорошая идея. Но я не могу успешно реализовать эту функцию.
- Как реализовать функцию ping в коде, указанном в ссылке
- Мое приложение для Android использует API-интерфейс Retrofit для отправки и получения содержимого PHP. Может ли Retrofit помочь в проверке подключения к Интернету?
- Можете ли вы предложить какой-либо другой простой и легкий в реализации метод проверки подключения к Интернету в режиме реального времени?
Код, который я использовал из этой ссылки: -
Имя класса: AppStatus
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; public class AppStatus { private static AppStatus instance = new AppStatus(); static Context context; ConnectivityManager connectivityManager; NetworkInfo wifiInfo, mobileInfo; boolean connected = false; public static AppStatus getInstance(Context ctx) { context = ctx.getApplicationContext(); return instance; } public boolean isOnline() { try { connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); connected = networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected(); return connected; } catch (Exception e) { System.out.println("CheckConnectivity Exception: " + e.getMessage()); Log.v("connectivity", e.toString()); } return connected;
}
Этот код помогает проверить подключение к Интернету, но не работает в ранее упомянутом условии: -
if (AppStatus.getInstance(this).isOnline()) { Toast.makeText(this,"You are online!!!!",8000).show(); } else { Toast.makeText(this,"Internet Connection is required !",8000).show(); Log.v("Home", "############################You are not online!!!!"); finish(); }