Wifi连接断开侦听器
|
我的班必须实现哪个侦听器才能自动检查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\");
}
没有找到相关结果
已邀请:
6 个回复
钨蜡唤喉晤
为了访问活动的网络信息,您需要在AndroidManifest.xml中添加以下uses-permission:
和以下意图接收者(或者您可以通过编程方式添加它……)
编辑:在Lollipop中,如果您要在用户连接到未计量的网络连接时执行某项操作,则Job Scheduling可能会有所帮助。看看:http://developer.android.com/about/versions/android-5.0.html#Power 编辑2:另一个考虑是我的答案不会检查您是否已连接到Internet。您可以连接到需要登录的Wi-Fi网络。这是一个有用的“ IsOnline()\”检查:https://stackoverflow.com/a/27312494/1140744
磐乓铝举
在AndroidManifest.xml中
有关使用Intent的说明,请参见WIFI_STATE_CHANGED_ACTION和CONNECTIVITY_ACTION。
疾很毋悲
注意,每个定义广播动作。如果您需要了解有关注册广播接收器的更多信息,请查看以下内容: 以编程方式注册广播接收器
在清单中,您可以执行以下操作(如果您不想在代码中注册接收者):
编辑: 我应该补充一点,如果只需要在应用程序运行时接收广播,则最好在代码中而不是在清单中注册此广播接收器。通过在清单中指定它,即使先前未运行连接更改,您的进程也将收到通知。 如果目标为Android 7.0(API级别24)及更高版本的应用在清单中声明了广播接收器,则不会接收该广播。如果应用将其android.content.BroadcastReceiver}注册到android.content.Context#registerReceiver Context.registerReceiver(),并且该上下文仍然有效,它们仍将接收广播。
皇小福另届
创建新的Receiver类。
并将该接收器类添加到AndroidManifest.xml文件中。
澜悍景哭苟
然后,根据上面显示的第一个答案对接收器类进行了更改。
最后,在您的活动中,您可以添加一个侦听器以利用此回调。
请注意,回调触发后,监听器将被删除,这是因为它是静态监听器。无论如何,此实现对我而言都是有效的,并且是挂接到您的活动的一种方法,或者可以使它处于静态。
泪琉踞檄
但可能想与时俱进:https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback
活动: