广播发送和接受者

http://blog.csdn.net/xiazdong/article/details/7768807

广播接收者核心代码

同步广播发送方核心代码:

 

[java] view plaincopy

  1. Intent intent = new Intent();
  2. intent.setAction("...");
  3. Context.sendBroadcast(intent);

有序广播发送方核心代码:

[java] view plaincopy

  1. Intent intent = new Intent();
  2. intent.setAction("...");
  3. Context.sendOrderedBroadcast(intent,null);


广播接收者核心代码:

 

[java] view plaincopy

  1. public class Receiver extends BroadcastReceiver{
  2. public void onReceive(Context context, Intent intent) {
  3. Bundle bundle = intent.getExtras();
  4. ...
  5. }
  6. }

AndroidManifest.xml

[html] view plaincopy

  1. <application>
  2. <receiver android:name=".Receiver">
  3. <intent-filter android:priority="1000">
  4. <action android:name="com.xiazdong"/>
  5. </intent-filter>
  6. </receiver>
  7. </application>

三、广播实例

1.同步广播实例

场景说明:

 

(1)广播发送者:

[java] view plaincopy

  1. package com.xiazdong.broadcastsender;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import android.widget.Toast;
  9. public class MainActivity extends Activity {
  10. private Button button;
  11. private OnClickListener listener = new OnClickListener(){
  12. @Override
  13. public void onClick(View v) {
  14. Intent intent = new Intent();
  15. intent.setAction("com.xiazdong");
  16. intent.putExtra("name", "xiazdong");
  17. MainActivity.this.sendBroadcast(intent);
  18. Toast.makeText(getApplicationContext(), "发送广播成功", Toast.LENGTH_SHORT).show();
  19. }
  20. };
  21. @Override
  22. public void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.main);
  25. button = (Button)this.findViewById(R.id.button);
  26. button.setOnClickListener(listener);
  27. }
  28. }

(2)广播接收者

[java] view plaincopy

  1. package com.xiazdong.broadcastreceiver1;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.util.Log;
  6. public class Receiver extends BroadcastReceiver {
  7. @Override
  8. public void onReceive(Context context, Intent intent) {
  9. String name = intent.getExtras().getString("name");
  10. Log.i("Recevier1", "接收到:"+name);
  11. }
  12. }

AndroidManifest.xml

[java] view plaincopy

  1. <receiver android:name=".Receiver">
  2. <intent-filter>
  3. <action android:name="com.xiazdong"/>
  4. </intent-filter>
  5. </receiver>

结果:

2.有序广播实例

场景说明:

(1)广播发送者

[java] view plaincopy

  1. package com.xiazdong.broadcastsender;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import android.widget.Toast;
  9. public class MainActivity extends Activity {
  10. private Button button;
  11. private OnClickListener listener = new OnClickListener(){
  12. @Override
  13. public void onClick(View v) {
  14. Intent intent = new Intent();
  15. intent.setAction("com.xiazdong");
  16. intent.putExtra("name", "xiazdong");
  17. MainActivity.this.sendOrderedBroadcast(intent, null);   //有序广播发送
  18. Toast.makeText(getApplicationContext(), "发送广播成功", Toast.LENGTH_SHORT).show();
  19. }
  20. };
  21. @Override
  22. public void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.main);
  25. button = (Button)this.findViewById(R.id.button);
  26. button.setOnClickListener(listener);
  27. }
  28. }


(2)广播接收者

Receiver1

[java] view plaincopy

  1. package com.xiazdong.broadcastreceiver1;
  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.util.Log;
  6. public class Receiver extends BroadcastReceiver {
  7. @Override
  8. public void onReceive(Context context, Intent intent) {
  9. String name = intent.getExtras().getString("name");
  10. Log.i("Recevier1", "接收到:"+name);
  11. abortBroadcast();   //Receiver1接收到广播后中断广播
  12. }
  13. }

AndroidManifest.xml

[html] view plaincopy

    1. <receiver android:name=".Receiver">
    2. <intent-filter android:priority="1000"> <!-- 设置最高优先级 -->
    3. <action android:name="com.xiazdong"/>
    4. </intent-filter>
    5. </receiver>
时间: 2024-10-22 03:43:33

广播发送和接受者的相关文章

Android中 广播发送 和 接受 的简单示例

AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.broadcast" android:versionCode="1" android:vers

简单的广播发送与接收

发送端: public class MainActivity extends Activity { //先在布局文件main.xml中定义一个Button /* * * <Button * android:layout_width="fill_parent" * android:layout_height="wrap_content" * android:text="@string/button_send" * android:id=&qu

Android广播发送流程中的强停应用判断源码分析

在Android3.1之后,强停的应用不再能接收系统广播,而是否能接收第三方应用的广播则取决于广播发送方是否允许你接收,下面我们从Android源码中来看一下这些具体是如何实现的: 当我们使用自定义的Activity或者Service的成员函数sendBroadcast将这个Intent发送出去.自定义的Activity类(或自定义Service类)继承了Activity类(或Service 类),Activity类(或Service 类)又继承了ContextWrapper类,成员函数send

Android 自定义广播发送和接收

android系统会发送许多系统级别的广播,比如屏幕关闭,电池电量低等广播.同样应用可以发起自定义“由开发者定义的”广播.广播是从一个应用内部向另一个应用发送消息的途径之一. BroadcastReceiver是一个可以监听和响应广播的组件.本文中,我们将会演示如何发送自定义广播以及如何通过编程和使用Manifest文件定义一个BroadcastReceiver来监听这一广播.我们最后只要调用sendBroadcast就可以发送广播信息了. 1,编写MyReceiver,MyReceiver代码

自定义广播发送、接收

//发送自定义广播 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 发送广播事件 (消息) * @param view */ public void click(V

Android安全问题 抢先接收广播 - 内因篇之广播发送流程

导读:本文说明系统发送广播的部分流程,如何利用Intent查找到对应接收器.我们依然只关注接收器的排序问题 这篇文章主要是针对我前两篇文章 android安全问题(四) 抢先开机启动 - 结果篇 android安全问题(五) 抢先拦截短信 - 结果篇 现在给出第二步分的分析 下面就来看看发送广播的流程 Context中的sendBroadCast函数的实现是在ContextImpl中,和发送广播相关的有如下六个函数 void android.app.ContextImpl.sendBroadca

Android_广播

BroadcastReceiver 一,概述 使用场景: 1.同一app内部的组件之间的消息通信 2.同一app不同进程之间的消息通信 3.不同app之间的组件之间消息通信 4.Android系统与app之间的消息通信 实现原理:观察者模式,基于消息的发布/订阅事件模型. 实现流程(大致): 1.接受者通过Binder机制向AMS(Activity Manager Service)进行注册 2.发送者通过Binder机制向AMS发送广播 3.AMS查找符合条件(IntentFilter/Perm

BroadcastReceiver简介

Demo传送门,包含Service内容,Service简介见下篇文章 涉及到的内容 接收系统广播 发送自定义广播 无序广播 intent携带数据 有序广播 终止广播 修改广播数据 得到广播数据 指定最终广播接受者,即使被终止,也会受到 系统常用广播的配置 应用方面 拦截短信 串改短信内容 拦截电话 串改拨出的号码 特殊情况 (屏幕开关的事件) 代码注册 代码注销 BroadcastReceiver入门(一) 什么是广播接受者 BroadcastReceiver就是一台收音机 用来接收androi

StickyBroadcast在获取电池状态中的妙用

StickyBroadcast在获取电池状态中的妙用 今天在做开发的时候,突然遇到这样的一个问题,当你的设备电量低于15%的时候这个时候设备的闪光灯是无法打开的,但是我们平台的解决方案对这一块没有做出任何的提示,于是直接导致了用户认为他的闪光灯坏掉了,于是老大要求我们解决这个问题. 我们都知道电池的电量信息获取我们是通过广播来实现的. 标准做法如下: private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {