Android BroadcastReceiver广播接受者

时间:2024-04-10 21:37:16
静态注册
配置清单表注册:只要曾经注册过哪怕关闭也能调用
 方式一:sendBroadCastReceive
  广播的步骤:
      发送  无序广播,普通广播
      (1).发送方
         Intent intent=new Intent();
         intent.setAction("");发送的内容
        sendBroadcast(intent);
      (2).接受方
      创建一个reserver类继承BroadcastReceiver
        重写receiver方法
        配置receiver并且写receiver的属性intent-filter,--action
        注:action的名字和发送的内容相同setAction;
       (3). 主要作用service方法里面执行,可以在不同应用之间进行通信
       注:如果多个action一样,先执行当前项目里面的然后在执行其他项目中的;即接受方同时收到广播没有优先级别
方式二:
  发送有序广播
         1.创建
            Intent intent=new Intent("youxu");
            sendOrderedBroadcast(intent, null, null, null, 1, "我说了算", null);
         2.创建broadReciver
            getResultData();获取发送的信息
            setResultData();修改发送的信息
            abortBroadcast();拦截发送的信息,终止发送;
         3.配置
         <receiver android:name="com.example.reseiver.TwoBroadReceive">
            <intent-filter android:priority="900">
                <action android:name="youxu"/>
            </intent-filter>
        </receiver>
        priority为-1000到1000数值越大优先级越高
         短信的接受加权限设置的波段action
          <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
         权限 android.permission.RECEIVE_SMS
         开机启动的action即从非Activity启动
         <action android:name="android.intent.action.BOOT_COMPLETED"/>
         开机启动需要调到activity必须设置flags
         intent.setFlags(Intent.FLAG_ACTIVITYw_NEW_TASK);
           </receiver>
          <receiver android:name="com.example.duanxin.KaiJiXinResever"            >
            <intent-filter >
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                </intent-filter>
        </receiver>ww
动态注册:
    在当前Acitivity中配置
在onStart中注册,onStop中取消unregisterReceiver
               DongTaiBroadReceive receive;
               IntentFilter intentfilter=new IntentFilter("intent");
               receive = new DongTaiBroadReceive();
               registerReceiver(receive, intentfilter);
               Intent inten=new Intent("intent");
               sendBroadcast(inten);
  在当前Acitivity中取消receiver
  protected void onDestroy() {
        // TODO Auto-generated method stub
         unregisterReceiver(receive);
        super.onDestroy();
    }