Android 全局监听判断有无网络(动态广播)

本人之前处理这个事情,网上很多的demo例子,都是在activity里的,本人一直想在appliation中设置,结果很麻烦弄了很多类还是会有bug和crash,想在全局设置判断网络费了一会功夫,网上有大神说可以利用广播实施监听

下面分享自己的例子给大家,没有那么麻烦,很简单

首先在Mainactivity

public class MainActivity extends Activity  {
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        setBreoadcast();
      
    }
 
    /**
     * 设置网络监听
     */
    private void setBreoadcast() {
        BroadcastReceiver receiver=new NetBroadCastReciver();
        IntentFilter filter=new IntentFilter();
        filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
        filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(receiver, filter);
    }
然后在一个广播的类里

public class NetBroadCastReciver extends BroadcastReceiver {
 
    /**
     * 只有当网络改变的时候才会 经过广播。
     */
    private MyDialog dialog;
    private View view;
 
    @Override
    public void onReceive(Context context, Intent intent) {
 
        //此处是主要代码,
        //如果是在开启wifi连接和有网络状态下
        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            if (NetworkInfo.State.CONNECTED == info.getState()) {
                //连接状态 处理自己的业务逻辑
                EventBus.getDefault().post(new BroadCastEvent(SharePrefrence.BooleanBroadCast));
            } else {
                Toast.makeText(context, "网络链接失败", Toast.LENGTH_SHORT).show();
                context.startActivity(new Intent(context, BooleanNetWork.class));
            }
        }
 
 
    }
 
}
 

你可能感兴趣的:(Android 全局监听判断有无网络(动态广播))