解决8.0/9.0获取Wifi名字为空 WifiInfo.getSSID为空的情况

最近遇到一个奇怪的bug,部分手机上获取wifi的名字,通过WifiManager.getConnectionInfo().getSSID()"unknown ssid",调试查看SSID为"",这导致接下来的一系列逻辑都出现了问题。目前发现RROS(Remix)的ROM会出现这个问题。特此记录解决方法。

首先实例化WifiManager和ConnectivityManager

mWifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
mConnectivityManager = (ConnectivityManager) this.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);

一般情况下都是直接得到WifiInfo

 WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();

但是使用mWifiInfo.getSSID()得到的值为""
作为替代,可以通过如下代码获取当前连接的WIFI的名称

NetworkInfo wifiInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
String wifiName = wifiInfo.getExtraInfo();

通过此种方法,获取到的wifi名称前后带有引号,通过代码删除前后引号即可

if (wifiName.startsWith("\"")) {
	wifiName = wifiName.substring(1, wifiName.length());
}
if (wifiName.endsWith("\"")) {
	wifiName = wifiName.substring(0, wifiName.length() - 1);
}

9.0的机型,必须请求GPS权限并打开GPS才可以正确获取到WIFI名称

你可能感兴趣的:(Android基础)