android - tiempo - tengo señal pero no puedo conectar a internet en mi celular
Android: Cómo habilitar/deshabilitar Wifi o la conexión a Internet mediante programación (6)
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 algunas escrituras, por ejemplo. WIFI_SERVICE vs. WifiService.
Al utilizar la clase de Administrador de Conectividad, podemos acceder a una red Wi-Fi o 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 refieren 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 cualquiera de la red? Como usar una función:
connec.getNetworkInfo(0).setState(NetworkInfo.State.DISCONNECTED);
Para habilitar la desactivación de Wifi, use la clase WifiManager
para obtener servicios del sistema (dispositivo Android) para WiFi:
WifiManager wifi =(WifiManager)getSystemService(Context.WIFI_SERVICE);
Ahora el objeto wifi
de la clase WifiManager
se usa para obtener el estado wifi:
if(wifi.isWifiEnabled())
//Perform Operation
else
//Other Operation
Y lo más importante, no olvide dar 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 un código de muestra completo del proyecto para activar / desactivar Wifi en Android, visite el enlace de mi sitio web .
Sé de habilitar o deshabilitar wifi:
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(status);
donde el estado puede ser true
o false
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"/>
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
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"/>
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 estado WiFi, tenemos que agregar los siguientes permisos dentro del archivo AndroidManifest.xml:
android.permission.ACCESS_WIFI_STATE
android.permission.UPDATE_DEVICE_STATS
android.permission.CHANGE_WIFI_STATE