Android 监听网络连接状态

来源:互联网 发布:表白失败知乎 编辑:程序博客网 时间:2024/06/01 10:52

当然离不开广播

public class NetBroadcastReceiver extends BroadcastReceiver {    public NetBroadcastReceiver() {    }    private NetContentListener netContentListener;    @Override    public void onReceive(Context context, Intent intent) {        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);        NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);        if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {            //改变背景或者 处理网络的全局变量            netContentListener.netContent(false);        } else {            //改变背景或者 处理网络的全局变量            netContentListener.netContent(true);        }    }    public void setNetContentListener(NetContentListener netContentListener) {        this.netContentListener = netContentListener;    }    public interface NetContentListener {        void netContent(boolean isConnected);    }}

别忘了在清单文件里面注册

        <receiver            android:name=".receiver.NetBroadcastReceiver"            android:enabled="false"            android:exported="false">            <intent-filter>                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />            </intent-filter>        </receiver>

要读取网络状态,还需要加权限

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

最后就是在对于的地方注册广播进行监听

    //监听网络状态    private void registerNetReceiver() {        IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);        NetBroadcastReceiver netBroadcastReceiver = new NetBroadcastReceiver();//这应该是个全局变量,为了方便观看,才写成了局部        this.registerReceiver(netBroadcastReceiver, filter);        netBroadcastReceiver.setNetContentListener(new NetBroadcastReceiver.NetContentListener() {            @Override            public void netContent(boolean isConnected) {                if (isConnected) {                    LogUtils.tag("main").i("网络连接");                    layout_notconnet.setVisibility(View.GONE);                } else {                    LogUtils.tag("main").i("网络断开");                    layout_notconnet.setVisibility(View.VISIBLE);                }            }        });    }

最后别忘记在activity关闭的时候把注册的广播给取消掉
“`
@Override
protected void onDestroy() {
super.onDestroy();
this.unregisterReceiver(netBroadcastReceiver);
}

0 0
原创粉丝点击