广播接受者BoradCastRevier

来源:互联网 发布:怎么注册淘宝小号安全 编辑:程序博客网 时间:2024/05/20 12:22

广播接受者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
原创粉丝点击