广播接受者BoradCastRevier

广播接受者BoradCastRevier,接收系统消息

概念:
两种注册方式
广播接受优先级
两种方式


广播接受者概念:
- 分类:
- 无序广播
- 无论广播接收者的优先级是什么,所有的广播接收者都能同时接收到,不可以被拦截

- **有序广播**
    - 按照广播接受者的优先级去优先接收,可以被拦截(短信接收,电话来电)

- 广播注册
- 在清单文件中注册,静态注册,永久生效
- 在Activity中注册,动态注册
- 广播优先级的优先级:
- google推荐的优先级范围(-1000–1000)

- 生命周期特别短

  • 案例_IP

    • 步骤

      • 定义一个类继承系统提供的BroadCastReceiver类,

      - 复写OnReceiver()方法

      ```
      @Override
          public void onReceive(Context context, Intent intent) {
              //收到广播就会回调这个方法
              Log.i("hhh", "收到新广播"+intent);
      //      获取传过来的号码
              String num  = getResultData();
              //获取存在sd卡中的数据
              SharedPreferences sp = context.getSharedPreferences("config", context.MODE_PRIVATE);
      
              String inpNum = sp.getString("inpNum", "");
              //将新号码设置出去
              setResultData(inpNum+num);
          }
      ```
      
      • 注册广播

        • 在清单文件中配置

          <receiver 
                      android:name="com.example.w_ip.Mybroad">
                      <intent-filter >
                          <action 
                              android:name="android.intent.action.NEW_OUTGOING_CALL"/>//接收的广播类型
                      </intent-filter>
                  </receiver>
        • 添加权限

        <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
  • 在MianActivity中设置号码,并且第二次打开时会回显IP号码
    “`

    //回显数据
            sp = getSharedPreferences("config", MODE_PRIVATE);
            String inpNumsString = sp.getString("inpNum", "");
            ed_num.setText(inpNumsString);
        }
        //保存设置的IP号
        public void saveAndExit(View v){
            String inpNum = ed_num.getText().toString().trim();
            sp.edit().putString("inpNum", inpNum).commit();
            Toast.makeText(this, "数据保存成功:"+inpNum, Toast.LENGTH_SHORT).show();
            //退出当前Activity
            finish();
        }
    ```
    

==注意:

使用广播接收者时,只要在清单文件注册了广播,即使应用程序退出了,当接收到广播事件后系统会自动把应用程序重启并处理广播事件==

案例-监听网络状态改变


广播可以实现友方唤醒
案例-监听开机启动

如何在广播接受者中启动Activity?

context.start(new Intent(context,MainActivity));

常见异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值