Dans votre AndroidManifest.xml fichier
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Votre code:
ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(Service.CONNECTIVITY_SERVICE);
/* you can print your active network via using below */
Log.i("myNetworkType: ", connectivityManager.getActiveNetworkInfo().getTypeName());
WifiManager wifiManager= (WifiManager) getApplicationContext().getSystemService(getApplicationContext().WIFI_SERVICE);
Log.i("routes ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getRoutes().toString());
Log.i("domains ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDomains().toString());
Log.i("ip address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getLinkAddresses().toString());
Log.i("dns address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDnsServers().toString());
if(connectivityManager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI) {
Log.i("myType ", "wifi");
DhcpInfo d =wifiManager.getDhcpInfo();
Log.i("info", d.toString()+"");
}
else if(connectivityManager.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_ETHERNET) {
/* there is no EthernetManager class, there is only WifiManager. so, I used this below trick to get my IP range, dns, gateway address etc */
Log.i("myType ", "Ethernet");
Log.i("routes ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getRoutes().toString());
Log.i("domains ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDomains().toString());
Log.i("ip address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getLinkAddresses().toString());
Log.i("dns address ", connectivityManager.getLinkProperties(connectivityManager.getActiveNetwork()).getDnsServers().toString());
}
else {
}
Sortie
Vous ne pouvez pas arriver à savoir si vous êtes connecté via wifi ou réseau à l'aide WifiManager
comme WifiManager
traite uniquement avec wifi. Vous devez utiliser ConnectivityManager
. J'ai mis à jour le code à nouveau où j'ai fusionné WifiManager
et ConnectivityManager
pour produire le résultat que vous vouliez.
mais savez-vous comment obtenir l'adresse IP de la passerelle/du routeur, le masque de réseau, le réglage DNS lorsque l'appareil est connecté via Ethernet? – widhaprasa
@WidhaprasaWaliprana connectivityManager.getActiveNetworkInfo(). ToString() –
Je reçois: [type: ETHERNET [], état: CONNECTED/CONNECTED, raison: (non spécifié), supplémentaire: (aucun), itinérant: faux, basculement: faux , isAvailable: true, isConnectedToProvisioningNetwork: false] Je ne reçois pas l'adresse IP de la passerelle/routeur, masque de réseau, DNS – widhaprasa