android中的广播Broadcast

a、简介
    1、广播接收器 BroadcastReceiver
    2、广播发送 sendBroadcast
   b、用法
    1、静态注册广播接收器

  
            
                
            
        

2、动态注册广播接收器

 NetWorkReceiver netWorkReceiver = new NetWorkReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(netWorkReceiver, intentFilter);

   d、
    d.1、有序广播
     该类型的广播,一旦发送,
     所有注册的能够接收该广播的接收器
     按照优先级进行顺序接收,优先级高的接收器
     优先接收,然后经过一系列处理,再传递给优先级低的
     接收器。当然,也可以不继续向下传递,直接abort。
     1、优先级高的先接收,如果优先级一样则先注册的会先接收;
     2、优先级高的已经接收处理消息的接收器可以继续向下传递
     该广播,也可以阻断继续传递。 abortBroadcast();
     3、优先级高的接收器处理的广播,可以追加消息,然后再继续传递。
     (PS:Intent传递时,每次回调方法中的Intent均为新的对象,
     那么向原先的Intent中追加bundle是无法追加成功的。
     只能使用:setResultExtras(bundle))。
     
    d.2、无序广播
     该类型的广播一旦发送,
     那么所有注册的能够接收该广播的接收器
     均能平等的收到该广播消息。


   e、广播接收器接收权限
    (PS:以下的权限操作需要在Application标签外部)
    a、自定义权限
     1、通过此标签用来声明新的权限。
     2、通过此标签来申请新的权限。

广播的发送:

  //下面两行操作,只能确保已经可以让广播接收器拦截该条广播信息
        Intent intent = new Intent();
        intent.setAction(ReceiveraActivionConstants.ACTION_RECEIVER_SHOW_SOME_TEXT);
        //下面若干行代表发送的广播需要携带的信息
        Bundle bundle = new Bundle();
        bundle.putString("MSG", "这是一条广播信息");
        intent.putExtras(bundle);
        //准备就绪,可以发送一条广播了
        sendBroadcast(intent, "z.permission.HAHAHA");

广播的接收:

public class CustomBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        String msg = bundle.getString("MSG");
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }
}




 

你可能感兴趣的:(android中的广播Broadcast)