第一行代码-5.2 接收系统广播

来源:互联网 发布:mac视频播放器换音频 编辑:程序博客网 时间:2024/04/29 13:52

1、动态注册监听网络变化
  下面这个例子是通过动态注册网络状态监听器,来实现当网络转台变化时,显示吐司提醒用户。代码也比较简单:

private IntentFilter intentFilter;    private NetworkChangeReceiver networkChangeReceiver;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 动态注册广播        intentFilter = new IntentFilter();        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");        networkChangeReceiver = new NetworkChangeReceiver();        registerReceiver(networkChangeReceiver, intentFilter);    }    @Override    protected void onDestroy() {        unregisterReceiver(networkChangeReceiver);        super.onDestroy();    }    class NetworkChangeReceiver extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            Toast.makeText(context, "网络状态变化", Toast.LENGTH_LONG).show();        }    }
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

  下面是当手机取消飞行模式的时候的效果:

改进:输出网络可不可用

    class NetworkChangeReceiver extends BroadcastReceiver {        @Override        public void onReceive(Context context, Intent intent) {            ConnectivityManager connectionManager = (ConnectivityManager)                    getSystemService(Context.CONNECTIVITY_SERVICE);            NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();            if (networkInfo != null && networkInfo.isAvailable()) {                Toast.makeText(context, "当前网络可用", Toast.LENGTH_LONG).show();            }            else {                Toast.makeText(context, "当前网络不可用", Toast.LENGTH_LONG).show();            }        }    }

  还有一个例子是关于静态注册的,可以接收到开机完成的信息,由于比较简单就不展示了。

0 0