Android activar / desactivar WiFi HotSpot mediante programación
¿Hay una API para activar / desactivar la HotSpot WiFi en Android mediante programación?
¿Qué métodos debo llamar para activarlo / desactivarlo?
- Cómo y qué establecer en Android WifiConfiguration.preSharedKey para conectarse a la red WPA2 PSK WiFi
- ¿Cómo crear wifi tethering Hotspot en Android Marshmallow?
- ¿Puedo cambiar el propietario del grupo en un grupo persistente en Wi-Fi Direct?
- Android prueba la conexión wifi programáticamente
- Diferencia entre getConnectionInfo () y getScanResults () para detectar cambios de intensidad de señal
ACTUALIZACIÓN: Existe esta opción para activar el HotSpot y activar / desactivar el WiFi, pero esta no es una buena solución para mí.
- Android: ¿Cómo obtener la encriptación Wifi actual?
- Acceso a la red cuando el teléfono Android está dormido
- Obtener la intensidad de la señal de WIFI y datos móviles
- Cómo comprobar el Internet real conectado en android?
- wifi.getDhcpInfo () en Android devuelve la puerta de enlace IP incorrecta
- Conexión WiFi de Android mediante programación
- Wi-Fi Directo y "normal" Wi-Fi - ¿Diferentes MAC?
- La aplicación nunca recibe RSSI_CHANGED_ACTION
Utilice la clase a continuación para cambiar o revisar la configuración del hotspot Wifi:
import android.content.*; import android.net.wifi.*; import java.lang.reflect.*; public class ApManager { //check whether wifi hotspot on or off public static boolean isApOn(Context context) { WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE); try { Method method = wifimanager.getClass().getDeclaredMethod("isWifiApEnabled"); method.setAccessible(true); return (Boolean) method.invoke(wifimanager); } catch (Throwable ignored) {} return false; } // toggle wifi hotspot on or off public static boolean configApState(Context context) { WifiManager wifimanager = (WifiManager) context.getSystemService(context.WIFI_SERVICE); WifiConfiguration wificonfiguration = null; try { // if WiFi is on, turn it off if(isApOn(context)) { wifimanager.setWifiEnabled(false); } Method method = wifimanager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); method.invoke(wifimanager, wificonfiguration, !isApOn(context)); return true; } catch (Exception e) { e.printStackTrace(); } return false; } } // end of class
Debes agregar los permisos a continuación a tu AndroidMainfest:
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Utilice esta clase ApManager independiente de cualquier lugar de la siguiente manera:
ApManager.isApOn(YourActivity.this); // check Ap state :boolean ApManager.configApState(YourActivity.this); // change Ap state :boolean
Espero que esto ayude a alguien
No hay métodos en el SDK de Android pertenecientes a la función de hotspot WiFi – lo siento!
Puede utilizar el siguiente código para habilitar, deshabilitar y consultar el estado directo wifi mediante programación.
package com.kusmezer.androidhelper.networking; import java.lang.reflect.Method; import com.google.common.base.Preconditions; import android.content.Context; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.util.Log; public final class WifiApManager { private static final int WIFI_AP_STATE_FAILED = 4; private final WifiManager mWifiManager; private final String TAG = "Wifi Access Manager"; private Method wifiControlMethod; private Method wifiApConfigurationMethod; private Method wifiApState; public WifiApManager(Context context) throws SecurityException, NoSuchMethodException { context = Preconditions.checkNotNull(context); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); wifiControlMethod = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class,boolean.class); wifiApConfigurationMethod = mWifiManager.getClass().getMethod("getWifiApConfiguration",null); wifiApState = mWifiManager.getClass().getMethod("getWifiApState"); } public boolean setWifiApState(WifiConfiguration config, boolean enabled) { config = Preconditions.checkNotNull(config); try { if (enabled) { mWifiManager.setWifiEnabled(!enabled); } return (Boolean) wifiControlMethod.invoke(mWifiManager, config, enabled); } catch (Exception e) { Log.e(TAG, "", e); return false; } } public WifiConfiguration getWifiApConfiguration() { try{ return (WifiConfiguration)wifiApConfigurationMethod.invoke(mWifiManager, null); } catch(Exception e) { return null; } } public int getWifiApState() { try { return (Integer)wifiApState.invoke(mWifiManager); } catch (Exception e) { Log.e(TAG, "", e); return WIFI_AP_STATE_FAILED; } } }
Su mejor apuesta será ver la clase WifiManager. Específicamente la función setWifiEnabled(bool)
.
Consulte la documentación en: http://developer.android.com/reference/android/net/wifi/WifiManager.html#setWifiEnabled(boolean)
Un tutorial sobre cómo usarlo (incluyendo los permisos que necesita) se puede encontrar aquí: http://www.tutorialforandroid.com/2009/10/turn-off-turn-on-wifi-in-android-using.html
Esto funciona bien para mi:
WifiConfiguration apConfig = null; Method method = wifimanager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE); method.invoke(wifimanager, apConfig, true);
Tengo que publicar api no oficial para el mismo, es contiene más que sólo hotspot activar on/off
. enlazar
Para el enlace DOC de la API.
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(status);
Donde el estatus puede ser true
o false
Add permission manifest: <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
- Utilizando el SDK de Android en un Mac, Eclipse es muy lento. ¿Cómo puedo acelerarlo?
- Qué causó IOException y Broken pipe