【问题标题】:How to know if an Android device is connected to a public wifi hotspot如何知道 Android 设备是否连接到公共 wifi 热点
【发布时间】:2014-05-09 17:37:19
【问题描述】:

我知道设备是否连接到 wifi 路由器。 出于安全原因,我想知道该连接是私人连接(我有密码的连接之一,如家庭、工作......),还是只是没有密码的公共开放连接(图书馆、机场。 ..)。

有可能吗?

【问题讨论】:

    标签: android wifi


    【解决方案1】:

    这里为您提供代码来查找所有可用 wifi 的列表及其信息,如 BSSID、SSID 等。 在这里您可以找到特定的 wifi 是公共的还是私有的。

    为名为 WifiDataBeans 的 wifi 数据创建 bean

    public class WifiDataBeans {
    public String ssid;
    public String bssid;
    public String compatibility;
    public int freq;
    public int level;}
    

    在你的 mainActivity 中

         WifiManager manager;
        public  ArrayList<WifiDataBeans> list = new ArrayList<WifiDataBeans>();
    

    在 onCreate() 中

            manager = (WifiManager) getSystemService(WIFI_SERVICE);
    
                List<ScanResult> results = manager.getScanResults();
                        for (int i = 0; i < results.size(); ++i) 
            {
                WifiDataBeans bean = new WifiDataBeans();
                bean.ssid = results.get(i).SSID;
                bean.bssid = results.get(i).BSSID;
                bean.compatibility = results.get(i).capabilities;
                bean.freq = results.get(i).frequency;
                bean.level = getPowerPercentage(results.get(i).level);
                list.add(bean);
    
            }
    

    您可以在此处查看所有 wifi BSSID 列表,如果有,则表示私有或公开。

    【讨论】:

      【解决方案2】:

      是的,您可以检查特定的 wifi 是私人的还是公共的。 您可以获取所有可用 wifi 的列表,并可以获取他们的 BSSID,如果任何 wifi 连接具有 BSSID,这意味着这是私有的,否则不是。如果您想要代码,请告诉我。

      【讨论】:

      • 是的,请提供一些代码,因为我不知道我是否理解正确。你的意思是如果 getConnectionInfo().getBSSID() 返回空那么它是一个公共的?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多