【问题标题】:Get List of Available WiFi networks without location services in Android在 Android 中获取没有位置服务的可用 WiFi 网络列表
【发布时间】: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


【解决方案1】:

通过将应用的targetSDKversion设置为21或更低,我们可以在不打开GPS的情况下获得可用的WIFI列表。

【讨论】:

  • 谢谢,但这不是一个选项,因为我想要最新的目标 sdk 版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
相关资源
最近更新 更多