最近在写一个和Wifi有关的程序,原来的意图是想去拿到手机当前WIFI连接下的密码。如果是对于有Root过的手机,我们可以从路径:/data/data/com.android.settings/databases/wifi_settings.db拿到wifi_settings.db这样的一个数据库文件。这个数据库文件的确比较好,不过是对于开发或是盗密码的人来说,而对于那些有条件才能公开Wifi密码的人来说,这是一个令人头疼的事了。虽然,我们可以从这个数据库文件拿到我们手机曾经连过的Wifi相关信息,不过美中不足的是,有很多手机里,其实是没有这样的一个数据库文件的。这个我也不知道是为什么。不过好在,还有另一个配置文件/data/misc/wifi/wpa_supplicant.conf中也有相关的信息。配置文件中相关内容如下:
network={
ssid="CMCC" //网络名称
psk="12345678" //这个是密码
key_mgmt=WPA-PSK //加密方式
}
不过这些美好的事情都有一个共同的前提:ROOT!
下面我来简单介绍一下关于WIFI的WifiConfiguration类。api中是这样介绍这个类的:
A class representing a configured Wi-Fi network, including the security configuration. Android will not necessarily support all of these security schemes initially.
——这是一个代表已配置的Wi-Fi网络的类,也包括安全配置。 Android将不一定支持所有的这些最初的保障计划。
所以,这个类就是包含了一些已经配置好的WI-FI网络,如当前正在连接的WI-FI网络信息。
获取方式:
WifiInfo info = wifiManager.getConnectionInfo();getBSSID() 获取BSSID属性
getDetailedStateOf() 获取客户端的连通性
getHiddenSSID() 获取SSID 是否被隐藏
getIpAddress() 获取IP 地址
getLinkSpeed() 获取连接的速度
getMacAddress() 获取Mac 地址
getRssi() 获取802.11n 网络的信号
getSSID() 获取SSID
getSupplicanState() 获取具体客户端状态的信息
运行示例图:
源码Demo参考:Android下的WIFI开发