Usando la clase Connectivity Manager podemos tener acceso a wifi o red de 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
respectivamente se refiere a la conexión móvil y wifi
Si mi dispositivo Android está conectado a ambos, ¿podemos cambiar entre cualquiera de las redes o podemos desactivar alguna de las redes? Como usar una función:
connec.getNetworkInfo(0).setState(NetworkInfo.State.DISCONNECTED);
Respuestas:
Sé de habilitar o deshabilitar wifi:
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(status);
donde el estado puede ser
true
ofalse
según el requisito.Editar:
También necesita los siguientes permisos en su archivo de manifiesto:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
fuente
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
“<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />”
también es necesario.Para habilitar WiFi:
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); wifi.setWifiEnabled(true);
Para deshabilitar WiFi:
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); wifi.setWifiEnabled(false);
Nota: Para acceder con el estado WiFi, debemos agregar los siguientes permisos dentro del archivo AndroidManifest.xml:
android.permission.ACCESS_WIFI_STATE android.permission.UPDATE_DEVICE_STATS android.permission.CHANGE_WIFI_STATE
fuente
Una solución completa:
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(); }
Referencia: http://amitkumar-android.blogspot.com/p/installation-steps.html
fuente
Para habilitar deshabilitar Wifi, use la
WifiManager
clase para obtener servicios del sistema (dispositivo Android) para Wifi:WifiManager wifi =(WifiManager)getSystemService(Context.WIFI_SERVICE);
Ahora, el objeto
wifi
de laWifiManager
clase se usa para obtener el estado de wifi:if(wifi.isWifiEnabled()) //Perform Operation else //Other Operation
Y lo más importante, no olvide otorgar el siguiente permiso en su archivo de manifiesto de 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" />
Para obtener información detallada y el código de muestra completo del proyecto para habilitar / deshabilitar Wifi en Android, visite el enlace de mi sitio web .
fuente
En Android Q (Android 10) ya no puede habilitar / deshabilitar wifi mediante programación. Use el Panel de configuración para alternar la conectividad wifi:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY) startActivityForResult(panelIntent, 0) } else { // use previous solution, add appropriate permissions to AndroidManifest file (see answers above) (this.context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ } }
fuente
agregue este permiso en su manifiesto y luego use el código anterior para cambiar el estado de 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"/>
fuente
No pude acceder al objeto de contexto directamente.
Mi solución es la siguiente:
Context appContext = Android.App.Application.Context; var wifiManager = (WifiManager)appContext.GetSystemService(WifiService); wifiManager.SetWifiEnabled(state);
También tuve que cambiar algunos escritos, por ejemplo. WIFI_SERVICE frente a WifiService.
fuente
Es posible habilitar / deshabilitar wifi en dispositivos anteriores a Android 10 usando el siguiente código:
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled (estado);
Pero tenga en cuenta que ya no es posible hacer esto en Android 10 y probablemente también lo haga.
https://issuetracker.google.com/issues/141011684
fuente
Android 10 (Q) en adelante wifi no se puede habilitar / deshabilitar, debe abrir la intención de configuración,
// for android Q and above if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { Intent panelIntent = new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY); startActivityForResult(panelIntent, 0); } else { // for previous android version WifiManager wifiManager = (WifiManager) this.getApplicationContext().getSystemService(WIFI_SERVICE); wifiManager.setWifiEnabled(true); }
En manifiesto,
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" android:required="true" />
fuente
Este método está obsoleto ahora a partir de ahora con Android Q.
Intente esto realmente ayudará.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {// if build version is less than Q try the old traditional method if (!wifiManager.isWifiEnabled()) { wifiManager.setWifiEnabled(true); btnOnOff.setText("Wifi ONN"); } else { wifiManager.setWifiEnabled(false); btnOnOff.setText("Wifi OFF"); } } else {// if it is Android Q and above go for the newer way NOTE: You can also use this code for less than android Q also Intent panelIntent = new Intent(Settings.Panel.ACTION_WIFI); startActivityForResult(panelIntent, 1); }
fuente