我的 class 必须实施哪个监听器,以便在wifi连接/断开连接时自动检查代码?
我能够手动检查wifi连接/断开,但每次我需要连接/断开Android设置的WIFI,然后运行我的程序的结果 .
我目前的代码很简单:
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled()==true)
{
tv.setText("You are connected");
}
else
{
tv.setText("You are NOT connected");
}
5 回答
实际上,您正在检查Wi-Fi是否已启用,但未连接 . 这只意味着手机上的Wi-Fi模式已启用并且能够连接到Wi-Fi网络 .
这就是我在广播接收器中监听实际Wi-Fi连接的方式:
要访问活动网络信息,您需要为AndroidManifest.xml添加以下用户权限:
以下意图接收器(或者您可以以编程方式添加...)
编辑:在Lollipop中,如果您希望在用户连接到未计量的网络连接时执行操作,则作业调度可能会有所帮助 . 看看:http://developer.android.com/about/versions/android-5.0.html#Power
编辑2:另一个考虑因素是我的答案没有检查你是否有连接到互联网 . 您可以连接到需要登录的Wi-Fi网络 . 这是一个有用的"IsOnline()"检查:https://stackoverflow.com/a/27312494/1140744
创建自己的类,扩展BroadcastReceiver ...
在AndroidManifest.xml中
有关使用Intent的说明,请参阅WIFI_STATE_CHANGED_ACTION和CONNECTIVITY_ACTION .
看看这两页javadoc:ConnectivityManager WiFiManager
请注意,每个人都定义了广播操作 . 如果您需要了解有关注册广播接收器的更多信息,请查看:Programmatically register a broadcast receiver
在您的清单中,您可以执行以下操作(如果您不希望在代码中注册接收器):
EDIT:
我应该补充一点,如果您只需要在应用程序运行时接收广播,最好在代码中注册此广播接收器而不是在清单中 . 通过在清单中指定它,即使以前没有运行连接,也会通知您的进程 .
在 AndroidManifest.xml 中添加以下权限 .
创建新的Receiver类 .
并将该接收器类添加到 AndroidManifest.xml 文件中 .
回应sabsab . 为了连接到Connectivity Change广播接收器,我使用了warbi的答案并添加了一个静态方法的类 .
然后我在上面显示的第一个答案上对接收器类进行了更改 .
最后,在您的活动中,您可以添加一个侦听器来使用此回调 .
请注意,在回调触发后会删除侦听器,这是因为它是一个静态侦听器 . 无论如何这个实现对我有用,并且是一种挂钩你的活动的方式,或者任何地方都给它静态 .