Android 2.2 WiFi热点API
我需要在Android 2.2(Froyo)中创建一个Wifi热点(如在Tethering和Portable Hotspot设置项中所见),需要进行什么API调用。Android 2.2 WiFi热点API
可以使用反射:)
得到WifiManager
使用反射来获取WifiManager
声明的方法调用后
private boolean setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled);
,寻找这个方法名setWifiApEnabled
并通过WifiManager
调用它对象
这些API被标记为@hide,所以目前你不能直接使用它们,但它们出现o n WifiManager的AIDL,以便他们可以访问!
一个例子可以是:
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();
}
}
}
它的工作原理,但我不能用我自己的改变目前的配置,并获得积极的AP当前WifiConfiguration开车带我到一个空configuration.Why?
好调查 – Schildmeijer 2010-08-02 14:55:56
你可以随时通过反射访问它们! – 2010-08-02 14:56:16
@ markov00:您建议的方法不是Android SDK的一部分。不要使用它,期限。 – CommonsWare 2010-08-26 03:52:08
似乎没有创建WiFi热点的API调用 - 抱歉!
这适用于API 8及以上版本。我使用了一个完全不同的版本,然后在下面(或以上),并且遇到了markov00遇到的同一个问题;无法加载便携式Wi-Fi AP的默认WifiConfiguration。我在别处找到了解决方案。
如果你喜欢的解决方案,它将如果被接受作为一个答案
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();
}
}
}
我仍然不能相信有用于激活/停用圈养没有API是很好的。希望它存在,但尚未记录。 – Sney 2010-07-02 13:04:00
这是记录:http://www.androidjavadoc.com/2.3/android/net/wifi/WifiManager.html只是不是官方API的一部分。 – 2013-02-27 20:32:50