android熄屏后wifiInfo.getSSID为空
时间: 2023-11-14 09:05:06 浏览: 96
在 Android 设备熄屏后,获取 WiFi 信息可能会出现一些问题,其中一个常见的问题是 `wifiInfo.getSSID()` 方法返回空值的情况。
这个问题的原因是在设备熄屏后,系统会关闭一些硬件设备,包括 WiFi 网络连接。当设备再次唤醒时,系统会重新连接 WiFi 网络,但这个过程需要一些时间。在这个过程中,`wifiInfo.getSSID()` 方法可能会返回空值。
为了解决这个问题,你可以使用 `BroadcastReceiver` 监听系统广播事件,例如 `WIFI_STATE_CHANGED` 和 `NETWORK_STATE_CHANGED`。当 WiFi 状态发生变化时,你可以在 `BroadcastReceiver` 中重新获取 WiFi 信息,这样就可以避免 `wifiInfo.getSSID()` 返回空值的情况。
另外,如果你需要在应用程序中获取 WiFi 信息,建议在应用程序中使用 `ConnectivityManager` 和 `NetworkInfo` 类来获取网络连接状态和网络信息。这样可以避免直接使用 `wifiInfo.getSSID()` 方法导致的问题。
相关问题
public void insertOrUpdate(WIFIInfo wifiInfo) { log.info("创建wifi账号密码,账号密码信息:"+ JSONObject.toJSONString(wifiInfo)); //查询是否已存在对应的wifi信息 boolean isHave = selectCountById(wifiInfo.getId()); wifiInfo.setUpdateTime(new Date()); //如果已存在wifi数据则修改,不存在则添加 int ins = 0; try { if(isHave){ ins = wifiInfoMapper.updateByPrimaryKeySelective(wifiInfo); if (ins > 0) { log.info("修改wifi账号成功"); } } else { wifiInfo.setCreateTime(new Date()); ins = wifiInfoMapper.insert(wifiInfo); if (ins > 0) { log.info("创建wifi账号成功"); } } } catch (Exception e) { log.error(isHave ? "wifi账号修改失败" : "wifi账号创建失败" + ",报错信息:"+ e.getMessage()); } }简化代码
可以简化为:
```
public void insertOrUpdate(WIFIInfo wifiInfo) {
log.info("创建wifi账号密码,账号密码信息:"+ JSONObject.toJSONString(wifiInfo));
wifiInfo.setUpdateTime(new Date());
boolean isHave = selectCountById(wifiInfo.getId());
int result = 0;
try {
if (isHave) {
result = wifiInfoMapper.updateByPrimaryKeySelective(wifiInfo);
log.info(result > 0 ? "修改wifi账号成功" : "wifi账号修改失败");
} else {
wifiInfo.setCreateTime(new Date());
result = wifiInfoMapper.insert(wifiInfo);
log.info(result > 0 ? "创建wifi账号成功" : "wifi账号创建失败");
}
} catch (Exception e) {
log.error((isHave ? "wifi账号修改失败" : "wifi账号创建失败") + ",报错信息:" + e.getMessage());
}
}
```
去掉了无用的局部变量,将修改和创建的判断改为使用返回值来判断。
public WIFIInfo selectCode(String id) { log.info("查询wifi信息,查询id:" + id); WIFIInfo wifiInfo = WIFIInfo.builder().id(id).build(); try{ wifiInfo = wifiInfoMapper.selectOne(wifiInfo); log.info("查询wifi信息:" + JSONObject.toJSONString(wifiInfo)); } catch (Exception e){ log.error("查询wifi信息出错",e.getMessage()); } return wifiInfo; }简化代码
可以简化为:
```
public WIFIInfo selectCode(String id) {
log.info("查询wifi信息,查询id:" + id);
WIFIInfo wifiInfo = wifiInfoMapper.selectByPrimaryKey(id);
log.info("查询wifi信息:" + JSONObject.toJSONString(wifiInfo));
return wifiInfo;
}
```
这里将查询方法改为了直接使用 `selectByPrimaryKey` 方法,去掉了无用的异常处理。
阅读全文