android广播简单使用

本文介绍了Android中广播的两种注册方式——动态注册与静态注册,并详细解释了每种方式的使用步骤,包括广播的发送、接收及注销过程。此外,还提供了一个关于监听全局APP联网状态的实用案例。

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);
    }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值