Android四大组件之一——Broadcast Receiver

向右看齐 2022-08-21 10:41 186阅读 0赞

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


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

  1. public class MyReceiver extends BroadcastReceiver {
  2. @Override
  3. public void onReceive(Context context, Intent intent) {
  4. String msg = intent.getStringExtra("msg");
  5. Toast.makeText(context, msg, 1111).show();
  6. }
  7. }

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

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

(3)MainActivity:

  1. public class MainActivity extends Activity {
  2. private Button btn;
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. btn = (Button) findViewById(R.id.button1);
  8. btn.setOnClickListener(new OnClickListener() {
  9. @Override
  10. public void onClick(View v) {
  11. Intent i = new Intent();
  12. i.setClass(MainActivity.this, MyReceiver.class);
  13. i.putExtra("msg", "发送给广播接收器的信息");
  14. sendBroadcast(i);
  15. //发送intent到广播接收器
  16. }
  17. });
  18. }
  19. }

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

  1. public class MyAutoRecevier extends BroadcastReceiver {
  2. @Override
  3. public void onReceive(Context context, Intent intent) {
  4. Toast.makeText(context, "自动广播已运行", 1111).show();
  5. Log.i("po", "自动广播已运行");
  6. }
  7. }

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

  1. <receiver android:name="broadcast_recevier1.MyAutoRecevier" >
  2. <intent-filter>
  3. <action android:name="android.intent.action.BOOT_COMPLETED" />
  4. </intent-filter>
  5. </receiver>

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


intent-filter:

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

一些标准广播Action常量:

  1. 常量值 意义
  2. android.intent.action.BOOT_COMPLETED 系统启动
  3. android.intent.action.ACTION_TIME_CHANGED 时间改变
  4. android.intent.action.ACTION_DATE_CHANGED 日期改变
  5. android.intent.action.ACTION_TIMEZONE_CHANGED 时区改变
  6. android.intent.action.ACTION_BATTERY_LOW 电量低
  7. android.intent.action.ACTION_MEDIA_EJECT 插入或拔出外部媒体
  8. android.intent.action.ACTION_MEDIA_BUTTON 按下多媒体键
  9. android.intent.action.ACTION_PACKAGE_ADDED 添加包
  10. android.intent.action.ACTION_PACKAGE_REMOVED 删除包

发表评论

表情:
评论列表 (有 0 条评论,186人围观)

还没有评论,来说两句吧...

相关阅读