编辑: 我知道如果定位服务关闭,SCAN_RESULTS_AVAILABLE_ACTION 会返回大小为“0”的列表。问题是如何在没有定位服务的情况下做到这一点。
上一个:
我需要手机所有可用 WiFi 网络的列表,并使用该列表在我的应用程序中填充 ListView
。我稍后会从我的应用程序连接到所需的网络。
我已经通过使用 , 实现了上述目标
wifiManager.startScan();
我已经注册了一个 BroadcastReciever,用于在扫描完成时接收通知,如下所示,
registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
接收代码如下,
class WifiReceiver extends BroadcastReceiver {
// This method call when number of wifiManager connections changed
public void onReceive(Context c, Intent intent) {
wifiResults.clear();
wifiList = wifiManager.getScanResults();
for(int i = 0; i < wifiList.size(); i++){
if(!wifiList.get(i).SSID.equals(""))
wifiResults.add(wifiList.get(i).SSID+" signal:"+wifiList.get(i).level);
}
adapter.notifyDataSetChanged();
wifiRefreshLayout.setRefreshing(false);
}
}
问题是我每次需要上述信息时都必须启用定位服务。我真的不明白这里的意义,因为我不需要定位服务,因为“SHAREit”等其他应用程序也这样做无需定位服务。是否有更好的方法来实现这一点?
最佳答案
我们可以通过将应用的 targetSDKversion 设置为 21 或更低来获取可用的 WIFI 列表,而无需打开 GPS。
关于android - 在 Android 中获取没有位置服务的可用 WiFi 网络列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44945405/