Android四大组件之一——Broadcast Receiver

:###广播接收器:可以响应和监听系统事件,也可手动启动


①简单手动启动代码:
(1)MyReceiver:

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String msg = intent.getStringExtra("msg");
        Toast.makeText(context, msg, 1111).show();
    }

}

(2)AndroidManifest.xml(注册广播接收器与注册Activity异曲同工)

<receiver android:name="broadcast_recevier1.MyReceiver" ></receiver>

(3)MainActivity:

public class MainActivity extends Activity {
    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.setClass(MainActivity.this, MyReceiver.class);
                i.putExtra("msg", "发送给广播接收器的信息");
                sendBroadcast(i);
                //发送intent到广播接收器
            }
        });

    }

}

②系统广播事件(自动):
(1)MyAutoReciver:

public class MyAutoRecevier extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "自动广播已运行", 1111).show();
        Log.i("po", "自动广播已运行");
    }

}

(2)AndroidManifest.xml(注意与第一种广播的注册方式的不同,关于intent-filter的使用后面再做详细的介绍):

<receiver android:name="broadcast_recevier1.MyAutoRecevier" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
</receiver>

以上代码是系统启动时广播就可以执行,但是我在测试的时候结果不理想。


intent-filter:

Intent过滤器:以我的理解来看,手机发生的所有action(动作)都有对应的常量值,例如android.intent.action.BOOT_COMPLETED是系统启动完成的action常量值。当符合intent-filter中设置的action的常量值,则就执行相应的广播。

一些标准广播Action常量:

            常量值                                      意义
 android.intent.action.BOOT_COMPLETED                系统启动
 android.intent.action.ACTION_TIME_CHANGED           时间改变
 android.intent.action.ACTION_DATE_CHANGED           日期改变       
 android.intent.action.ACTION_TIMEZONE_CHANGED       时区改变    
 android.intent.action.ACTION_BATTERY_LOW            电量低
 android.intent.action.ACTION_MEDIA_EJECT        插入或拔出外部媒体
 android.intent.action.ACTION_MEDIA_BUTTON          按下多媒体键
 android.intent.action.ACTION_PACKAGE_ADDED          添加包
 android.intent.action.ACTION_PACKAGE_REMOVED        删除包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值