Je voulais essentiellement savoir comment vérifier l'état de la connectivité Internet dans Android après la dépréciation des méthodes NetworkInfo au niveau de l'API 29.
J'ai essayé d'appeler la méthode getActiveNetworkInfo mais il est déprécié, toute aide rapide est très appréciée.
Je suis bloqué à ce stade ..
fun verifyIfNetworkAvailable(activity: AppCompatActivity):Boolean{
var connectivityManager = activity.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
var networkInfo = connectivityManager.isDefaultNetworkActive
return networkInfo != null && networkInfo.isConnected
}
par la façon dont j'utilise Kotlin .
3 Réponses :
allez-y avec celui-ci, PS pas le mien,
fun isWiFiConnected(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
val network = connectivityManager.activeNetwork
val capabilities = connectivityManager.getNetworkCapabilities(network)
capabilities != null && (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI))
} else {
connectivityManager.activeNetworkInfo.type == ConnectivityManager.TYPE_WIFI
}
}
NetworkInfo est obsolète au niveau de l'API 29. Ainsi, les méthodes qui retournent une instance pour NetworkInfo sont également obsolètes. Pour aller plus loin avec la nouvelle API, vous pouvez suivre le document qui dit: -
Les appelants doivent à la place utiliser l'API ConnectivityManager.NetworkCallback pour en savoir plus sur les changements de connectivité, ou utiliser ConnectivityManager # getNetworkCapabilities ou ConnectivityManager # getLinkProperties pour obtenir des informations de manière synchrone.
Veuillez consulter la documentation officielle pour Infos réseau et Connectivity Manager pour utilisation.
Vous pouvez vérifier la connexion Internet comme ça. si vous ne souhaitez pas vérifier la connectivité de l'appareil.
étape 1 ajoutez votre classe asynchrone
if (this.checkInternetConnection())
{
//call service
}
else
{
//handle no internet. Toast or dialog box.
}
étape 2 appelez cette tâche asynchrone c'est une fonction.
private boolean checkInternetConnection()
{
try
{
return new GCInternetChecker().execute().get();
}
catch (Exception e)
{
return false;
}
}
étape 3 vérifiez Internet avant d'appeler votre service
public class YourInternetCheckerClass extends AsyncTask<Void, Void, Boolean>
{
@Override
protected Boolean doInBackground(Void... voids)
{
try
{
InetAddress ipAddr = InetAddress.getByName("www.google.com");
return !ipAddr.equals("");
}
catch (Exception e)
{
Log.e("GCInternetChecker", e.toString());
return false;
}
}
}
Veuillez modifier le sujet / titre en
vérifier l'état de la connectivité Internet dans Android après la dépréciation des méthodes NetworkInfo au niveau de l'API 29