解决部分机型获取不到wifi ssid的问题

项目场景:

随着Android版本更新,Android9 及以上版本市场占有率越来越高,发现我们应用在高版本上出现,获取到 wifi 名称为 unknown ssid 的问题。这里提供一种通用的方式,测试了大部分机型,都可以正确获取到 wifi ssid。


问题描述:

之前在Android 6 及以下版本运行正常的程序,在 Android 9上发现异常,最后查到原因是获取的 wifi ssid 为 unknown ssid。以前直接使用如下代码获取的 ssid:

	    public String getWifiSSID(Context context) {
   
        	WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        	WifiInfo info = wifiManager.getConnectionInfo();
        	String wifiId = info != null ? info.getSSID() : null;
        	String result = wifiId != null ? wifiId.trim() : null;
        	return result;
    }

原因分析:

主要原因就是高版本收紧了权限,同时由于厂商的定制化修改了部分底层代码,导致通过WifiInfo 无法获取到正确的 ssid


解决方案:

这里通过一种通用的方式,基本可以解决90%以上的机型获取wifi ssid 的问题。具体代码如下:


修改AndroidManifest.xml,加上下面这些权限,这些权限有的Android 8 上需要,有的是Android9 及以上需要,我们把这些权限都加上,就可以保证大部分的机型有获取 wifi ssid 的权限了:

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
### Ubuntu 20.04 WiFi 连接问题解决方案 在某些情况下,Ubuntu 20.04 安装完成后可能会遇到无法正常显示或连接 WiFi 的情况。以下是针对该问题的具体分析和解决办法。 #### 硬件驱动缺失 部分用户的设备可能由于缺少必要的硬件驱动程序而导致 WiFi 功能不可用。特别是对于 Realtek 芯片组的无线网卡,通常需要手动安装适配的驱动程序[^1]。可以通过以下命令检查当前系统的无线网卡状态: ```bash lspci | grep Network ``` 如果发现网卡型号未被识别或者驱动加载失败,则可以尝试更新内核并重新编译对应的驱动模块。具体操作如下: ```bash sudo apt update && sudo apt install git dkms build-essential git clone https://github.com/lwfinger/rtl8723bu.git cd rtl8723bu make sudo make install ``` 完成上述步骤之后重启计算机即可验证效果。 #### 图形界面下启用WiFi服务 有时即使驱动已正确安装,但由于某种原因导致网络管理器未能启动相应的服务单元文件(netplan),从而造成图形化桌面环境中看不到任何可用的Wi-Fi选项[^2]。此时可通过终端执行下面这条指令来激活它: ```bash nmcli radio wifi on ``` 接着再回到GNOME Shell或者其他窗口管理器里查看是否有新的联网请求弹窗出现。 #### 命令行方式强制加入特定SSID 当面对一些特殊场景比如头戴显示器(HMD)模式运行Linux时,也许根本就没有机会去点击那个蓝色的小地球图标来进行常规意义上的配置工作;那么就可以利用`NetworkManager Command Line Interface (NMCLI)`工具来做这件事儿了[^3]: ```bash sudo nmcli device wifi connect "Your_SSID" password "your_password" ``` 只需替换掉引号内的实际值就能实现快速接入目标热点的目的. #### 对于惠普战99机型特别说明 考虑到提问者提到自己使用的是一台较新型号的笔记本——即惠普战99系列(2023款集成显卡版本),并且处于Windows 11与Ubuntu双重引导环境之中;因此除了以上通用型修复手段之外还需要额外注意BIOS设置方面是否存在干扰因素[^4].建议进入UEFI菜单确认Secure Boot功能已被关闭的同时还要确保Legacy Mode也被禁用了. 最后再次强调一遍:每次调整完重要参数后都记得保存更改然后彻底断电几秒钟后再开机测试新状况哦! ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值