android广播简单使用

来源:互联网 发布:网络时间校准网址 编辑:程序博客网 时间:2024/06/13 19:27

android广播简单使用

android广播使用得先注册,广播2种注册方式,动态注册和静态注册,他们的区别可以去网上搜索,
我简单总结下如何使用。

1.动态广播:
1).首先Activity初始化
public static final String BROADCAST_ACTION = “com.example.bhxx.testandroid”;//这个值随便填,注意与下面的保持一致就行
private BroadcastReceiver mBroadcastReceiver;
/**
* 注册动态广播
*/
private void registerBroadcase() {
mBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BROADCAST_ACTION);//只有持有相同的action的接受者才能接收此广播
registerReceiver(mBroadcastReceiver, intentFilter);//注册
}

2).使用广播
//发送广播内容
Intent intent = new Intent(); //Itent就是我们要发送的内容
intent.putExtra(“data”,”上海欢迎您”);
intent.setAction(BROADCAST_ACTION); //设置你这个广播的action,只有和这个action一样的接受者才能接受者才能接收广播
sendBroadcast(intent); //发送广播

3).广播接收
private class MyBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {

        if(intent.getAction().equals(BROADCAST_ACTION)){            String value = intent.getStringExtra("data");            Log.i("TAG","value="+value);        }    }}

4).注销广播
unregisterReceiver(mBroadcastReceiver);

搞定。

2.静态注册
1).在配置文件中添加

<receiver android:name="com.example.bhxx.testandroid.receiver.MyReceiver">            <intent-filter>                <action android:name="com.example.bhxx.testandroid.receiver.MyReceiver.startbroadcase">                </action>            </intent-filter>        </receiver>

//name值可以随便填 与后面对应就行

2).发送广播
//发送广播内容

Intent intent2 = new Intent();               intent2.setAction("com.example.bhxx.testandroid.receiver.MyReceiver.startbroadcase");intent2.putExtra("data", "北京欢迎您");sendBroadcast(intent2);

3).新建广播接收类 (MyReceiver )
public class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {

    if(intent.getAction().equals("com.example.bhxx.testandroid.receiver.MyReceiver.startbroadcase")){        String values = intent.getStringExtra("data");        Log.i("TAG","values =" +values);    }}

}

Ok搞定

注意,广播接收数据不能直接设置到主线程中。广播也能在内部类中使用,配置文件中这样使用:

<!-- 注册一个广播接受者      开启服务广播 -->        <receiver android:name="com.cn.daming.deskclock.TimersActivity$MyReceiver">             <intent-filter>                <action android:name="com.cn.daming.deskclock.startReceiver" ></action>            </intent-filter>        </receiver>

BasicActivity(基础Activity类)中可以用动态注册广播监听全局APP是否联网,
使用如下:
1).注册
protected NesConnectionChangeReceiver changeReceiver;

private void registerReceiver() {
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
changeReceiver = new NesConnectionChangeReceiver();
this.registerReceiver(changeReceiver, filter);
}

2).接收

protected class NesConnectionChangeReceiver extends BroadcastReceiver {        @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()) {                // 改变背景或者 处理网络的全局变量'                showToast("网络不可用");            }        }    }

3).注销

 private void unRegisterReceiver() {        this.unregisterReceiver(changeReceiver);    }   
0 0