美文网首页Android开发实用
Android判断wifi状态 监听wifi连接

Android判断wifi状态 监听wifi连接

作者: 感召的鳞 | 来源:发表于2019-07-02 22:05 被阅读0次

    一、添加权限

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />
    

    二、注册监听广播

    注册监听有两种方式
    1.AndroidMainfest.xml 中注册

    <receiver android:name="com.receiver.WifiReceiver">
        <intent-filter >
           <action android:name="android.net.wifi.RSSI_CHANGED"/>
           <action android:name="android.net.wifi.STATE_CHANGE"/>
           <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
        </intent-filter>
    </receiver>
    

    2.在代码中注册

     IntentFilter filter = new IntentFilter();
     filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
     filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
     filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
     registerReceiver(new WifiReceiver(), filter);
    

    三、实现监听广播类

    public class WifiReceiver extends BroadcastReceiver {
        private static final String TAG = "wifiReceiver";
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) {
                Log.i(TAG, "wifi信号强度变化");
            }
            //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)) {
                    Log.i(TAG, "wifi断开");
                } else if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
                    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                    //获取当前wifi名称
                    Log.i(TAG, "连接到网络 " + wifiInfo.getSSID());
                    TtsManager ttsManager = new TtsManager();
                    ttsManager.checkTtsJet(context.getApplicationContext());
                }
            }
            //wifi打开与否
            if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
                int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
                if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
                    Log.i(TAG, "系统关闭wifi");
                } else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
                    Log.i(TAG, "系统开启wifi");
                }
            }
        }
    }
    

    写文章不易,路过的伙伴辛苦点个赞,谢谢支持!

    相关文章

      网友评论

        本文标题:Android判断wifi状态 监听wifi连接

        本文链接:https://www.haomeiwen.com/subject/vpdxhctx.html