WIFI热点的开启状态和开启后的SSID如何获取呢?
打开WifiManager.java源码,可找到 getWifiApState() 方法,惊喜的发现直接调用这个方法就能获取到热点的状态,然而在调用的时候并不能调用到这个方法。。。这个方法被隐藏起来了,目前我是通过反射调用的。
/** * Gets the Wi-Fi enabled state. * @return One of {@link #WIFI_AP_STATE_DISABLED}, * {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_STATE_ENABLED}, * {@link #WIFI_AP_STATE_ENABLING}, {@link #WIFI_AP_STATE_FAILED} * @see #isWifiApEnabled() * * @hide Dont open yet */ public int getWifiApState() { try { return mService.getWifiApEnabledState(); } catch (RemoteException e) { return WIFI_AP_STATE_FAILED; } }
于是就写了一个放射,获取热点的状态
public static boolean isWifiApOpen(Context context) { try { WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); //通过放射获取 getWifiApState()方法 Method method = manager.getClass().getDeclaredMethod("getWifiApState"); //调用getWifiApState() ,获取返回值 int state = (int) method.invoke(manager); //通过放射获取 WIFI_AP的开启状态属性 Field field = manager.getClass().getDeclaredField("WIFI_AP_STATE_ENABLED"); //获取属性值 int value = (int) field.get(manager); //判断是否开启 if (state == value) { return true; } else { return false; } } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return false; }
通过 getWifiApState() 方法返回值的注释,可以找到如下几种状态,拿到当前状态值之后,只需要对比各种状态的值,就知道热点的开启状态了
* @return One of {@link #WIFI_STATE_DISABLED}, * {@link #WIFI_STATE_DISABLING}, {@link #WIFI_STATE_ENABLED}, * {@link #WIFI_STATE_ENABLING}, {@link #WIFI_STATE_UNKNOWN}
同样的,也是通过反射获取到热点的SSID
try { WifiManager manager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); //拿到getWifiApConfiguration()方法 Method method = manager.getClass().getDeclaredMethod("getWifiApConfiguration"); //调用getWifiApConfiguration()方法,获取到 热点的WifiConfiguration WifiConfiguration configuration = (WifiConfiguration) method.invoke(manager); ssid = configuration.SSID; } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); }
以上所述是小编给大家介绍的Android便携式热点的开启状态检测和SSID的获取方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Android编程获取Wifi名称(SSID)的方法,包括了Android编程获取Wifi名称(SSID)的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程获取Wifi名称(SSID)的方法。分享给大家供大家参考,具体如下: 可以使用WifiManager和WifiInfo来获取当前Wifi连接信息 记得在Manifest文件中添加许可 如果不是想获取当
我正在尝试使用java applet访问windows 7中显示为便携式设备的设备中的一些文件(其中包含“windows CE”应用程序)。。。。 我的设备路径是 同样我用了 当我导航到已连接的设备并右键单击文件并查看其属性时,它会将其位置显示为 此外,当我打开此文件时,它会自动放在我电脑的临时文件中。我也在使用签名小程序,所以不存在文件访问被拒绝的问题 我也用过
本文向大家介绍Android获取热点主机ip和连接热点手机ip的代码,包括了Android获取热点主机ip和连接热点手机ip的代码的使用技巧和注意事项,需要的朋友参考一下 其中定义WIFI AP的几个状态 对应于WifiMangaer.java中对这几个状态的定义。 获取WIFI热点的状态: 判断Wifi热点是否可用: 当然在应用中要添加访问WIFI设备的权限: 获取热点主机ip地址的代码: 总结
本文向大家介绍Python检测QQ在线状态的方法,包括了Python检测QQ在线状态的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python检测QQ在线状态的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。
问题内容: 说我有一个 现在,我需要单击它的状态。我的意思是我需要知道是否单击了它。 问题答案: 您还可以使用itemListener的itemStateChanged方法,如下所示: 并且您想知道后者使用方法的状态
我目前正在使用 获取执行设备的IP地址。如果该设备连接到一个“公共”wlan网络,并且该设备连接到一个wifi网络,该网络由另一个Android设备通过hotspot托管,则该功能正常。如果设备未连接到任何wifi网络,则返回“0.0.0.0”(正确)。但如果设备通过提供热点来承载wifi网络,methode仍然返回“0.0.0.0”。我如何在“自己的wifi网络”中获取热点提供设备的真实IP地址