• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Patata
http://weibo.com/totome
博客园    首页    新随笔    联系   管理    订阅  订阅
BroadcastReceiver 广播机制

实现一个BroadcastReceiver
public class MyAndroidReceiver extends BroadcastReceiver
override onReceive(Context context, Intents Intents)


注册BroadcastReceiver
在AndroidManifest.xml文件当中进行注册

 <receiver Android:name=“MyAndroidReceiver">
  <Intents-filter>
      <action Android:name=”com.great.action.NEW_BROADCAST”/>
    </Intents-filter>
</receiver>

 

在代码当中直接进行注册

 IntentsFilter filter = new IntentsFilter(NEW_BROADCAST );
MyAndroidReceiver MyAndroidReceiver = new MyAndroidReceiver();
registerReceiver(MyAndroidReceiver , filter);

 

1.XML注册

<receiver android:name="BroadcastReceiver_Demo1">
            <intent-filter>
                <action android:name="com.great.action.myaction"/>
            </intent-filter>
 </receiver> 

 

实现广播继承类

 1 public class BroadcastReceiver_Demo1 extends BroadcastReceiver
 2 {
 3     public BroadcastReceiver_Demo1()
 4     {
 5         System.out.println("BroadcastReceiver_Demo1  --> 构造函数!!!");
 6     }
 7 
 8 
 9     @Override
10     public void onReceive(Context context, Intent intent)
11     {
12         System.out.println("BroadcastReceiver_Demo1  --> onReceive!!!");
13         Bundle bundle = intent.getExtras();
14         if(bundle != null)
15         {
16             Object[] arrObj = bundle.keySet().toArray();
17             System.out.println("=====接收广播内容(开始)=====");
18             for(int i = 0; i < arrObj.length; i++)  
19             {
20                 String strKey = arrObj[i].toString();
21                 System.out.println("key=" + strKey + "  value=" + String.valueOf(bundle.get(strKey)));
22             }
23             System.out.println("=====接收广播内容(结束)=====");
24         }
25     }
26 }

广播发送类

 1 //注册广播接收器,注册方法二:在代码中注册
 2 //创建一个 BroadcastReceiver_Demo1对象,然后我们就要对他进行设置了
 3 BroadcastReceiver_Demo1    bcr = new BroadcastReceiver_Demo1();  
 4 //创建一个IntentFilter的对象,这就和上个例子中的intent-filter标签一样,我们要往里面添加过滤器
 5 IntentFilter intentFilter = new IntentFilter();
 6 //添加一个的 intent action,用来接收当时区改变的消息
 7 //intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
 8 
 9 //添加一个的 intent action,用来接收自定义的消息
10 intentFilter.addAction("com.great.action.myaction");
11 //添加完过滤器后,就要将 BroadcastReceiver 对象和相应的过滤器注册在 Activity 上
12 BroadcastDemo1_Activity.this.registerReceiver(bcr, intentFilter); 
13 Toast.makeText(BroadcastDemo1_Activity.this, "注册广播接收器成功!!!", Toast.LENGTH_LONG).show();
14 
15 
16 //取消注册广播接收器,但带来的好处是,用户可以自己控制开关广播接收器,可控是一个比较大的优势。
17 //注销 BroadcastReceiver 的注册 
18 BroadcastDemo1_Activity.this.unregisterReceiver(bcr);
19 
20 //发送广播
21 btnSendBroadcast.setOnClickListener(new OnClickListener()
22 {
23     @Override
24     public void onClick(View v)
25     {
26         Intent intent = new Intent();
27         //实例化 Bundle 对象
28         Bundle bundle = new Bundle();
29         //设置 Bundle 对象的数据
30         bundle.putString("ID", "1000");
31         bundle.putString("Name", "张三");
32         //在 Intent 对象中放入 Bundle 对象
33         intent.putExtras(bundle);
34         intent.setAction("com.great.action.myaction");
35         sendBroadcast(intent);
36     }
37 });

 

posted on 2012-09-01 10:56  Blacksky  阅读(275)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3