我正在使用WifiManager获取可用的wifi网络列表。
这是我的方法:
public List<ScanResult> getWifiInRange() {
//scan for wifis
wifiMgr.startScan();
// gets ~last~ list of WiFi networks accessible through the access point.
return (wifiScan = (List<ScanResult>) wifiMgr.getScanResults());
}
但是这种方法在某些设备上不会返回任何wifi网络!
例如,当我在Asus_p024上使用此方法时,它可正常工作并返回可用的wifi网络列表但在Samsung Tab-s上它返回0项!
更新
我只是改变了我的代码并实现了这样的广播:
public class WifiBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
List<ScanResult> mScanResults = wifi.getScanResults();
wifiList = wifi.getScanResults();
netCount = wifiList.size();
Log.d("Wifi", "Total Wifi Network" + netCount);
}
}
我仍然无法获得可用的wifi网络列表。
谢谢您的帮助。
尝试为SCAN_RESULTS_AVAILABLE_ACTION
注册here的BroadcastReceiver。 WifiManager.getScanResults()
的文档说:
返回最新接入点扫描的结果。
因此,我们无法确定在调用getScanResults()
时可以获得最新扫描的结果
请检查您的清单中是否包含以下权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
此外,对于API 23+,必须在运行时请求权限。