【问题标题】:Get WiFi captive portal info获取 WiFi 强制门户信息
【发布时间】:2014-11-17 21:58:11
【问题描述】:

有没有办法访问 Android 的 WiFi 连接当前是强制门户(需要 Web 登录)的广播? Android似乎确实内置了这个。如果不是广播接收器,有没有办法检查强制门户检查的结果?我相信它正在使用这个类,它对 API 是隐藏的:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.L_preview/android/net/CaptivePortalTracker.java

在 4.2 之前,它可能使用的是:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.2_r1/android/net/wifi/WifiWatchdogStateMachine.java

背景:

我一直在使用自己的方法来检测 WiFi 是否可能需要登录。我会等待 WiFi 连接状态,然后 ping 一个站点并确保有响应。在大多数情况下,这似乎很有效。另一种策略是执行 HttpRequest 并检查您收到的重定向或响应正文,类似于上面列出的类中的 Android 策略。

不过,Lollipop 的新功能是在 WiFi 没有连接时使用移动数据连接。这意味着我的 ping 方法仍将返回结果,并且不会发生重定向,因为请求将通过移动数据进行路由。

有没有办法获取 Android 的 WiFi 强制门户的当前状态?如果没有,我们能否确保请求通过 WiFi,即使在 Android 上没有连接时也是如此?

【问题讨论】:

    标签: android wifi android-5.0-lollipop


    【解决方案1】:

    您必须使用新的ConnectivityManager.setProcessDefaultNetwork API 来强制您的应用通过强制门户进行通信。示例见https://github.com/pawitp/muwifi-autologin/commit/f045fe36f1fd98a106ea652e2d56f7ddfc871760

    添加完整代码:

    final ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    for (Network net : cm.getAllNetworks()) {
        if (cm.getNetworkInfo(net).getType() == ConnectivityManager.TYPE_WIFI) {
            Utils.logDebug(TAG, "Seting process network to " + net);  
            /*Since API 23 ConnectivityManager.setProcessDefaultNetwork(net); 
            is deprecated, use: */
            cm.bindProcessToNetwork(net);
        }
    }
    

    【讨论】:

    • 是的,在发布此内容后,这就是我一直在尝试做的事情。不幸的是,它似乎不太好用。当我在强制门户 WiFi 网络上请求网络时,WiFi 从状态栏中消失(并在几秒钟后返回)。我会继续努力,看看能不能成功。
    • 使用 cm.getAllNetworks() 和 ConnectivityManager.setProcessDefaultNetwork。不要使用 requestNetwork。
    • 是的,这就是我最终所做的。找到正确的网络并使用 setProcessDefaultNetwork 进行设置(代码添加到您的答案中)。我试图使用 requestNetwork 来获取网络,但 cm.getAllNetworks() 帮我找到了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多