85 votes

Android : Comment activer/désactiver la connexion Wifi ou Internet de manière programmatique

En utilisant la classe Connectivity Manager, nous pouvons accéder à un réseau wifi ou Internet :

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

// ARE WE CONNECTED TO THE NET
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||
  connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) {
  // ...
}

donde 0 y 1 se réfère respectivement à la connexion mobile et à la connexion wifi

Si mon appareil Android est connecté aux deux réseaux, peut-on passer d'un réseau à l'autre ou peut-on désactiver l'un des réseaux ? Comme en utilisant une fonction :

connec.getNetworkInfo(0).setState(NetworkInfo.State.DISCONNECTED);

1 votes

Avez-vous obtenu une solution pour l'option de désactivation des données mobiles ?

187voto

viv Points 2887

Je sais comment activer ou désactiver le wifi :

WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(status);

où le statut peut être true o false selon les besoins.

Editar:

Vous devez également disposer des autorisations suivantes dans votre fichier manifeste :

 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

47 votes

Également au manifeste : <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

3 votes

Cela diffère-t-il de wifiManager.reconnect() ? Qu'en est-il de wifiManager.reassociate() ? De plus, dans l'approche ci-dessus, si vous vouliez réinitialiser le WiFi, pourriez-vous appeler wifiManager.setWifiEnabled(false) et wifiManager.setWifiEnabled(true) dos à dos ? Ou faut-il d'abord le désactiver, puis attendre un signal (récepteur de diffusion, etc.) avant de le réactiver ?

0 votes

Si vous voulez un tutoriel de démonstration, c'est ici : demoadda.com/demo/Android/

30voto

Valeh Ağayev Points 316

Pour activer le WiFi :

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(true);

Pour désactiver le WiFi :

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(false);

Note : Pour accéder à l'état WiFi, nous devons ajouter les permissions suivantes dans le fichier AndroidManifest.xml :

android.permission.ACCESS_WIFI_STATE
android.permission.UPDATE_DEVICE_STATS 
android.permission.CHANGE_WIFI_STATE

5 votes

Seul CHANGE_WIFI_STATE est nécessaire, au moins dans Android 4.2

2 votes

UPDATE_DEVICE_STATS est seulement pour les applications système.

3 votes

Depuis Android Q, il n'est pas possible d'activer/désactiver directement le wifi.

13voto

Amit kumar Points 57

Une solution complète :

try {
    WifiManager wifi = (WifiManager) 
        context.getSystemService(Context.WIFI_SERVICE);

    WifiConfiguration wc = new WifiConfiguration();
    wc.SSID = "\"SSIDName\"";
    wc.preSharedKey  = "\"password\"";
    wc.hiddenSSID = true;
    wc.status = WifiConfiguration.Status.ENABLED; 

    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
    wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);

    wc.allowedPairwiseCiphers
        .set(WifiConfiguration.PairwiseCipher.TKIP);
    wc.allowedPairwiseCiphers
        .set(WifiConfiguration.PairwiseCipher.CCMP);
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);

    boolean b=wifi.isWifiEnabled();
    if (b) {
        wifi.setWifiEnabled(false);
        Toast.makeText(context, "yes", Toast.LENGTH_SHORT).show();
    } else {
        wifi.setWifiEnabled(true);
        Toast.makeText(context, "no", Toast.LENGTH_SHORT).show();
    }
    //Log.d("WifiPreference", "enableNetwork returned " + b );

} catch (Exception e) {
    e.printStackTrace();
}

Référence : http://amitkumar-Android.blogspot.com/p/installation-steps.html

1 votes

L'appel pour définir le gestionnaire wifi avec la configuration wifi est manquant : wifi.addNetwork(wc) ;

4 votes

Pourquoi voudriez-vous coder en dur votre SSID et votre mot de passe ? Ce n'est pas une bonne idée.

0 votes

@lifeson106 Je pense que c'est uniquement à des fins de démonstration.

4voto

Pour activer ou désactiver le Wifi, utilisez le bouton WifiManager classe pour obtenir les services du système (appareil Android) pour le Wifi :

WifiManager wifi =(WifiManager)getSystemService(Context.WIFI_SERVICE); 

Maintenant, l'objet wifi de la WifiManager est utilisée pour obtenir le statut du wifi :

if(wifi.isWifiEnabled())
    //Perform Operation
else
    //Other Operation

Et surtout, n'oubliez pas de donner les autorisations suivantes dans votre fichier Manifest Android :

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

Pour obtenir des informations détaillées et un exemple de code complet du projet d'activation/désactivation du Wifi sur Android, visitez le site suivant mon lien internet .

1voto

varun bhardwaj Points 634

Ajoutez cette permission dans votre manifeste et utilisez ensuite le code ci-dessus pour changer l'état du WiFi :

 <!--permission ge enable and disable WIFI in android-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X