美文网首页
自定义广播接收器

自定义广播接收器

作者: 小贱嘎嘎 | 来源:发表于2017-06-15 14:41 被阅读0次

Android的广播机制方便了开发者接收系统及其他APP发送的广播(开机,电池电量改变等,那么如何自定义一个广播呢?下面来说说自定义广播的流程

  • ****第一步****
    先设置好一个独一无二的action(一个字符串),发送和接收广播都要依靠这个action,以下为例:
    public static final String ACTION_MEMEDA = "com.shijianan.demo.memeda";

  • ****第二步****
    新建BroadcastReceiver子类,重写onReceive方法
    public class MemedaReceiver extends BroadcastReceiver {
    public static final String ACTION_MEMEDA = "com.shijianan.demo.memeda";
    public static final String EXTRA_MEMEDA = "memeda";

        @Override
        public void onReceive(Context context, Intent intent) {
              //一旦接收到通知,并且通知携带数据的话就吐司出来
              if(intent!=null&&intent.hasExtra(EXTRA_MEMEDA)){
                  Toast.makeText(context, intent.getStringExtra(EXTRA_MEMEDA), Toast.LENGTH_SHORT).show();
              }
         }
    }
    
  • ****第三步****
    注册并使用接收器
    1,动态注册

    public class BroadcastActivity extends AppCompatActivity {
    
        private MemedaReceiver memedaReceiver;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_broadcast);
              initView();
              registerReceiver();
        }
    
        private void initView(){
              findViewById(R.id.custom).setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      //发送一个通知
                      Intent intent = new Intent(MemedaReceiver.ACTION_MEMEDA);
                      intent.putExtra(MemedaReceiver.EXTRA_MEMEDA,"memeda");
                      sendBroadcast(intent);
                  }
              });
          }
    
          private void registerReceiver(){
              //初始化广播接收器对象,注册广播
              memedaReceiver = new MemedaReceiver();
              //这里的action就是一开始定义的那个action
              IntentFilter intentFilter = new IntentFilter(MemedaReceiver.ACTION_MEMEDA);
              registerReceiver(memedaReceiver,intentFilter);
          }
    
         @Override
          protected void onStart() {
              super.onStart();
              //也可以在这里注册
          }
    
          @Override
          protected void onStop() {
              super.onStop();
              //如果在onStart()中注册在这里记得反注册
          }
    
          @Override
          protected void onDestroy() {
              super.onDestroy();
              //反注册
              unregisterReceiver(memedaReceiver);
          }
      }
    

2,静态注册

  • AndroidManifest中Application节点下添加如下代码
    <receiver android:name=".broadcastreceive.MemedaReceiver">
    <intent-filter>

    <action android:name="com.shijianan.demo.memeda"/>
    </intent-filter>
    </receiver>
  • 要发送一个通知则如下所示
    //MemedaReceiver.ACTION_MEMEDA的值等于刚才的action的值
    Intent intent = new Intent(MemedaReceiver.ACTION_MEMEDA);
    intent.putExtra(MemedaReceiver.EXTRA_MEMEDA,"memeda");
    sendBroadcast(intent);

相关文章

  • 全局大喇叭

    自定义广播 1.定义广播接收器 重写onReceive方法 2.注册广告监听 3.发送自定义广播 静态注册 创建广...

  • Android - base - Broadcast

    四大组件之广播 大纲 广播机制简介 广播接收器 广播发信器 接收系统广播 发送自定义广播 本地广播 #广播机制简介...

  • 自定义广播

    安卓允许用户发送自定义广播(broadcast),满足接收条件的接收器(receiver)就可以接受自定义广播。 ...

  • 说说在 Android 中如何发送自定义广播

    1 发送标准广播 先新建一个广播接收器用于来接收自定义的广播: 然后修改 AndroidManifest.xml ...

  • android网络监听学习笔记

    网络变化android自带广播、采用广播接收器接收网络变化的监听 自定义广播接收 为了方便全局监听在baseact...

  • 极光推送收到推送通知的处理

    1、自定义广播接收器继承自BroadcastReceiver类,实现其回调方法onReceive(Context ...

  • Android Studio监控Home按键

    思路:当HOME键被按下的时候,系统会发出广播,我们写一个自定义的广播接收器,就可以拦截到它。 自定义一个广播接收...

  • LocalBroadcastManager

    使用 自定义 BroadcastReveicer 子类 注册接收器 发送广播网络请求成功 取消注册 实现 单例实现...

  • 关于Broadcast

    前言 广播分类 标准广播:异步收发,所有的广播接收器几乎可以同时收到广播。有序广播:同步收发,当上一个广播接收器处...

  • Android 广播

    【Android 广播】 BroadcastReceiver简介 BroadcastReceiver(广播接收器)...

网友评论

      本文标题:自定义广播接收器

      本文链接:https://www.haomeiwen.com/subject/kziyqxtx.html