分享

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

 DeepReading 2019-04-10

最近遇到一个奇怪的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名称

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多