Android 广播接收 wifi 热点链接

1、添加相应权限

为了获取wifi 相关内容需要添加相关权限

<uses-permission android:name="android.permission.access_wifi_state" />
<uses-permission android:name="android.permission.access_network_state" />

2、wifi的静态监听

实现wifi 的静态监听监听 ,就是在整个app 使用过程中都可以接收到广播。
AndroidManifest.xml配置文件中声明


··········
<receiver android:name=".WifiNetConnectReceive" >    //这个是你接受监听的类文件
            <intent-filter>  //添加监听的相关动作
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
                <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
                <action android:name="android.net.wifi.STATE_CHANGE" />
            </intent-filter>
        </receiver>
        ··········

3、动态监听

注册监听

   //在想实现监听的activity 中  
    @Override
    public void  onResume() {
        super.onResume();
        IntentFilter inf = new IntentFilter();
        inf.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        inf.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
        inf.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        context.registerReceiver(new WifiNetConnectReceive(), inf);

        System.out.println(TAG + "动态注册wifi监听");
    }

注销监听

    @Override
    public void onDestroy() {
        super.onDestroy();
        try {
            context.unregisterReceiver(new WifiNetConnectReceive());
        }catch (IllegalArgumentException e) {
            throw e;
            }
    }

4、接受广播具体操作

public class WifiBroadCastReceive  extends BroadcastReceiver {
    private  String TAG = "WifiBroadCastReceive  :";

    @Override
    public void onReceive(Context context, Intent intent) {

        //wifi 是否连接 热点
        if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
            NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
            if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
                System.out.println( TAG + "wifi 网络断开 ");

            }

            if (info.getState().equals(NetworkInfo.State.DISCONNECTING)) {
                System.out.println( TAG + "wifi 网络正 断开");
            }

            if (info.getState().equals(NetworkInfo.State.CONNECTED)) {


                System.out.println( TAG +  "链接到网络热点");


            }
        }

        //wifi是否打开
        if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
            int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
            System.out.println("wifistate is  : " + wifistate);
            if (wifistate == WifiManager.WIFI_STATE_DISABLED) {

                System.out.println( TAG +  "系统关闭wifi");

            } else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
                System.out.println( TAG +  "系统开启wifi");
            }
        }
    }
}

文章参考:
Android 通过注册广播,实时监听网络连接与断开状态的变化
https://blog.csdn.net/qq_20785431/article/details/51520459

猜你喜欢

转载自blog.csdn.net/qq_27061049/article/details/81101126