android – 获取WiFi强制门户信息

android – 获取WiFi强制门户信息,第1张

概述有没有办法访问 Android的广播,WiFi连接目前是一个强大的门户网站(需要网络登录)? Android似乎确实内置了这个.如果不是广播接收器,有没有办法检查强制网络门户检查的结果?我相信它正在使用这个隐藏在API中的类: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5 有没有办法访问 Android的广播,WiFi连接目前是一个强大的门户网站(需要网络登录)? 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强制门户的当前状态?如果没有,即使AndroID没有连接,我们是否可以确保请求通过WiFi?

解决方法 您必须使用新的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);    }}
总结

以上是内存溢出为你收集整理的android – 获取WiFi强制门户信息全部内容,希望文章能够帮你解决android – 获取WiFi强制门户信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1127706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存