ConnectivityManager.TYPE_WIFI est déconseillé dans Android P API 28. Aussi, NetworkInfo # getType et ConnectivityManager.TYPE_MOBILE sont également obsolètes.
Alors, quelles sont les alternatives pour eux? J'ai compris que nous devons utiliser la méthode de la classe NetworkCapabilities . Cependant, je ne suis pas en mesure de fusionner toutes les choses en un seul endroit, comme comment faire getType () dans la classe NetworkCapabilities et comment ajouter le WIFI et les vérifications de données cellulaires?
Veuillez aider.
ConnectivityManager.TYPE_WIFI
est Obsolète. Vous devez utiliser NetworkCapabilities
.
Cela remplace l'ancienne ConnectivityManager.TYPE_MOBILE
méthode de sélection du réseau. Plutôt que d'indiquer un besoin de Wi-Fi car une application a besoin d'une bande passante élevée et risque d'obsolescence lorsqu'un nouveau réseau rapide apparaît (comme LTE), l'application doit spécifier qu'elle a besoin d'une bande passante élevée. De même, si une application a besoin d'un réseau non contrôlé pour un transfert en masse, elle peut spécifier qu'au lieu de supposer que toutes les connexions basées sur les cellules sont mesurées et que toutes les connexions basées sur le Wi-Fi ne le sont pas.
Les applications doivent utiliser à la place (
NetworkCapabilities.hasTransport(int)
ourequestNetwork(NetworkRequest, NetworkCallback)
pour demander un réseau approprié. pour les transports pris en charge.
Vous pouvez essayer de cette façon
NetworkAgentInfo networkAgent;
int type = ConnectivityManager.TYPE_NONE;
if (networkAgent.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
type = ConnectivityManager.TYPE_MOBILE;
} else if (networkAgent.networkCapabilities.hasTransport(
NetworkCapabilities.TRANSPORT_WIFI)) {
type = ConnectivityManager.TYPE_WIFI;
}
Vous pouvez utiliser l'extrait ci-dessous pour vérifier si vous avez une connexion Wifi ou cellulaire:
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.M) {
Network network = connectivityManager.getActiveNetwork();
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
return capabilities != null && (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
}
Utilisez la méthode ci-dessous .. 19/06/2019
public boolean isconnectedToWifi(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager == null) {
return false;
}
if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.M) {
Network network = connectivityManager.getActiveNetwork();
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
if (capabilities == null) {
return false;
}
return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI);
} else {
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo == null) {
return false;
}
return networkInfo.isConnected();
}
}