Android开发—BroadcastReceiver(广播接收者)详解

Android开发—BroadcastReceiver【广播接收者】详解

  • 一、BroadcastReceiver简介
  • 二、BroadcastReceiver创建
    • 实战:【拦截电话】
      • **附代码资源**
  • 三、自定义Broadcast
    • 实战:【自定义广播】
      • **附代码资源**
  • 四、有序广播和无序广播
    • 优先级
    • setComponent()、setPackage()
      • **附代码资源**
    • 拦截问题、 指定广播接收者
      • **附代码资源**
    • 接收多个广播与广播中传递数据
      • **附代码资源**

一、BroadcastReceiver简介

BroadcastReceiver:广播接收者,用于监听来自系统或者应用程序的广播事件;
一个广播事件可以有多个对应的广播接收者处理。

Android中内置的广播:

  • 手机开机完成
  • 电池电量不足

二、BroadcastReceiver创建

实战:【拦截电话】

获取拦截号码:

// 创建SharedPreferences对象
        sp = getSharedPreferences("config", MODE_PRIVATE);
    }
    public void click(View view) {
// 获取用户输入的拦截号码
        String number = et_ipnumber.getText().toString().trim();
//创建Editor对象,保存用户输入的拦截号码
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("number", number);
        editor.commit();
        Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();

实现拦截:

//获取拨打的电话号码
        String outcallnumber = getResultData();
//创建SharedPreferences对象,获取拦截号码
        SharedPreferences sp =
                context.getSharedPreferences("config",Context.MODE_PRIVATE);
        String number =sp.getString("number","");
//判断是否是拦截电话号码
        if(outcallnumber.equals(number)){
//清除电话
            setResultData(null);

Android开发—BroadcastReceiver(广播接收者)详解_第1张图片
Android开发—BroadcastReceiver(广播接收者)详解_第2张图片
Android开发—BroadcastReceiver(广播接收者)详解_第3张图片
Android开发—BroadcastReceiver(广播接收者)详解_第4张图片

加入权限后,运行程序,输入拦截号码,运行,发现号码一直出不来,模拟器直接自动重启:
这可能是拦截成功了,没有拦截成功是进入拨号界面,有一串数字且有通话时长。

Android开发—BroadcastReceiver(广播接收者)详解_第5张图片

附代码资源

三、自定义Broadcast

实战:【自定义广播】

发送一条自定义的广播,并创建广播类实现接收:

在manifest注册的Receiver中设置action
Android开发—BroadcastReceiver(广播接收者)详解_第6张图片
在onclick方法中,三步实现发送广播(这个send函数是在xml文件里设置的按钮的click)

  • 第一步:new一个intent
  • 第二步:setAction(这里的Action一定要和manifest中注册的action一样)
  • 第三步:sendBroadcast(这里就用sendBroadcast就够了)
    Android开发—BroadcastReceiver(广播接收者)详解_第7张图片
    运行截图:
    Android开发—BroadcastReceiver(广播接收者)详解_第8张图片

附代码资源

四、有序广播和无序广播

Android开发—BroadcastReceiver(广播接收者)详解_第9张图片

优先级

在manifest中设置优先级:
Android开发—BroadcastReceiver(广播接收者)详解_第10张图片
在MainActivity中设置优先级:
Android开发—BroadcastReceiver(广播接收者)详解_第11张图片

setComponent()、setPackage()

Android开发—BroadcastReceiver(广播接收者)详解_第12张图片
Android开发—BroadcastReceiver(广播接收者)详解_第13张图片
//掉setComponent,打开setPackage:
Android开发—BroadcastReceiver(广播接收者)详解_第14张图片
Android开发—BroadcastReceiver(广播接收者)详解_第15张图片

setComponent调用比setPackage()调用的优先级高\

Android开发—BroadcastReceiver(广播接收者)详解_第16张图片
Android开发—BroadcastReceiver(广播接收者)详解_第17张图片

附代码资源

拦截问题、 指定广播接收者

拦截广播接收者:
Android开发—BroadcastReceiver(广播接收者)详解_第18张图片
Android开发—BroadcastReceiver(广播接收者)详解_第19张图片
指定广播接收者:
Android开发—BroadcastReceiver(广播接收者)详解_第20张图片
Android开发—BroadcastReceiver(广播接收者)详解_第21张图片

附代码资源

接收多个广播与广播中传递数据

一个Receiver接收多个广播:
Android开发—BroadcastReceiver(广播接收者)详解_第22张图片
Android开发—BroadcastReceiver(广播接收者)详解_第23张图片
在广播中传递数据:
Android开发—BroadcastReceiver(广播接收者)详解_第24张图片
Android开发—BroadcastReceiver(广播接收者)详解_第25张图片
Android开发—BroadcastReceiver(广播接收者)详解_第26张图片
Android开发—BroadcastReceiver(广播接收者)详解_第27张图片

附代码资源

你可能感兴趣的:(Android,Studio,学习)