Android 全局监听判断有无网络

来源:互联网 发布:mac系统语言代码 编辑:程序博客网 时间:2024/06/07 03:30

本人之前处理这个事情,网上很多的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));            }        }    }}



0 0
原创粉丝点击