Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过广播接收器监控Wifi连接和断开状态_Android_Wifi_State_Broadcast_Monitor - Fatal编程技术网

Android 通过广播接收器监控Wifi连接和断开状态

Android 通过广播接收器监控Wifi连接和断开状态,android,wifi,state,broadcast,monitor,Android,Wifi,State,Broadcast,Monitor,我正在开发一个应用程序,在那里我需要一个广播接收器,它将监控wifi连接和断开状态。 我尝试了很多代码,浏览了很多stackoverflow帖子,但都没有成功。 我还没有发现任何这样的方法/代码可以正常工作,有些代码根本不工作,有些返回错误的信息,有些使广播接收器崩溃/重新启动等等。 那么,从4.0.3 Icecream sandwitch开始,是否有任何全面可靠的方法可以监控wifi连接/断开状态,适用于所有版本的android? 任何帮助都将不胜感激。首先,您需要定义一个可以侦听网络更改事件

我正在开发一个应用程序,在那里我需要一个广播接收器,它将监控wifi连接和断开状态。 我尝试了很多代码,浏览了很多stackoverflow帖子,但都没有成功。 我还没有发现任何这样的方法/代码可以正常工作,有些代码根本不工作,有些返回错误的信息,有些使广播接收器崩溃/重新启动等等。 那么,从4.0.3 Icecream sandwitch开始,是否有任何全面可靠的方法可以监控wifi连接/断开状态,适用于所有版本的android?
任何帮助都将不胜感激。

首先,您需要定义一个可以侦听网络更改事件的广播接收器

public class NetworkChangeReceiver extends BroadcastReceiver {

    public static final String TYPE_NET_CONNECTIVITY_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE";

    @Override
    public void onReceive(final Context context, Intent intent) {
        if (TYPE_NET_CONNECTIVITY_CHANGE.equals(intent.getAction())) {
            boolean connected = NetworkStatus.isNetworkConnected(context);
            if (connected) {
                //Connected

            } else {
              //Disconnected
            }
        }
    }
}
现在在清单中注册您的接收人,如下所示:-

<application
       ...>
    <receiver android:name=". NetworkChangeReceiver" >
        <intent-filter>
            <action android:name="android.net.wifi.WifiManager.WIFI_STATE_CHANGED_ACTION" />
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>

</application>


您检查过了吗?真的有效吗?由于我今天不在家,我无法检查,你能确认一下吗?还有,为什么需要国家许可?此外,在onReceive中,我们没有监听android.net.wifi.WifiManager.wifi\u STATE\u CHANGED\u操作,那么它将如何响应wifi连接/断开?我在现有应用程序中使用相同的功能,它正在工作。我假设您提供了Internet权限,因为没有它,您将无法收听任何事件。嗨,阿维,事实上,我只需要检测wifi已连接或断开连接,那么为什么需要Internet和电话权限?如果不需要数据连接,您可以删除phone_状态。