【发布时间】:2017-07-06 09:46:23
【问题描述】:
编辑: 我知道如果位置服务关闭,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”)也这样做不需要定位服务。有没有更好的方法来实现这一点?
【问题讨论】:
-
SHAREit 确实请求位置服务
-
@nitzanms no shareit 不需要定位服务
-
查看Android Play商店应用详情中的权限列表。它列出了精细和粗略的位置。
-
是的,它被列出来了,但是安装后它不在权限列表中。
标签: android broadcastreceiver android-wifi wifimanager