【问题标题】:Is it possible to reliably detect which wifi network I'm on?是否可以可靠地检测到我在哪个 wifi 网络上?
【发布时间】:2013-10-28 14:52:15
【问题描述】:

我正在编写一个 android 应用程序并试图找出是否有可靠的方法来确定手机何时在特定的 wifi 网络上。

例如,我只想在连接到家庭 wifi 时执行某些操作。

有人知道这是否可能吗?

【问题讨论】:

  • 这个问题的两个回答都部分错误,有时当您尝试获取 ssid 时,它在 ssid 中​​显示为 x0 或 null。他们不是 100% 可靠的遮阳篷

标签: wifi android iphone


【解决方案1】:

是的,在安卓和 iOS/iPhone 上都有这样的方法。

在Android上,最后需要使用这个方法:android.net.wifi.WifiInfo.getSSID

在 iPhone 上,这是一个完全不同的世界。您可以在此处找到有关如何执行此操作的详细说明: iPhone get SSID without private library

【讨论】:

  • 感谢您的回答,丹尼尔。我也非常关心这方面的安全性。我没有太多Android编程背景,所以这可能是一个简单的问题:上面对getSSID的调用是否类似于Unix中的系统调用?也就是说,如果设备被盗,小偷如何容易地欺骗 getSSID 的结果并欺骗我的应用程序做一些不应该做的事情?
  • 光靠SSID肯定是不够的,因为你的手机可以配置登录任何开放的wifi。然后小偷只需要创建一个与您的网络具有相同 SSID 的开放 wifi,手机将自动登录到它,并且对 getSSID 的调用将报告与您的家庭网络相同的名称。任何拥有路由器的人都可以在几分钟内完成这项工作。要获得安全的解决方案,您需要更深入地挖掘并从另一个角度来解决这个问题,而不是 SSID,不是路由器的 MAC 地址,也不是任何可从您家 100m 范围内复制和接收的东西。
  • 我不是安全专家。您应该将如何安全识别范围内的家庭网络的问题作为一个单独的问题发布,也许可以回到 security.stackexchange.com 。当你这样做时,请在此处链接其他问题。
【解决方案2】:

您可以通过以下方式获取当前 wifi 连接的 SSID:

WifiManager mng = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
String currentSSID = mng.getConnectionInfo().getSSID();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2010-11-04
    • 2012-09-12
    • 2014-06-06
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多