real rates news dailyfx daily currencies java android wifi jvm-hotspot

java - rates - real time forex news



Android 2.2 wifi hotspot API (3)

¿Cuál es la llamada a la API que necesito hacer en Android 2.2 (Froyo) para crear un punto de acceso Wifi (como se ve en el elemento de configuración Anclaje a red y punto de acceso portátil)?


No parece haber una llamada a la API para crear un punto de acceso WiFi. ¡Lo siento!


Puedes llamar

private boolean setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled);

utilizando la reflexión :)

después de que el WifiManager use la reflexión para obtener los métodos declarados de WifiManager , busque el nombre de este método setWifiApEnabled e setWifiApEnabled a través del objeto WifiManager

Estas API están marcadas como @hide, por lo que actualmente no puede usarlas directamente, pero aparecen en el AIDL para el WifiManager, por lo que son accesibles.

Un ejemplo puede ser:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); Method[] wmMethods = wifi.getClass().getDeclaredMethods(); for(Method method: wmMethods){ if(method.getName().equals("setWifiApEnabled")){ WifiConfiguration netConfig = new WifiConfiguration(); netConfig.SSID = "/"PROVAAP/""; netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN); netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA); netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); try { method.invoke(wifi, netConfig,true); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }

Funciona, pero no puedo cambiar la configuración actual con la mía, y obtener la configuración de Wifi actual de un AP activo me lleva a una configuración vacía. ¿Por qué?


esto funciona en API 8 y superior. Utilizo una versión muy diferente de la siguiente a continuación (o superior), y me encontré con el mismo problema al que se topó markov00; no poder cargar la Configuración Wifi predeterminada para el Wi-Fi AP portátil. Encontré una solución en otro lado.

Si le gusta la solución, sería bueno si se aceptara como respuesta.

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); Method[] wmMethods = wifi.getClass().getDeclaredMethods(); for (Method method: wmMethods){ if (method.getName().equals("setWifiApEnabled")){ try { // just nullify WifiConfiguration to load the default configuration ;) method.invoke(wifi, null, true); } catch (IllegalArgumentException e){ e.printStackTrace(); } catch (IllegalAccessException e){ e.printStackTrace(); } catch (InvocationTargetException e){ e.printStackTrace(); } } }