安卓开发之广播接收器

搞安全的,用到哪学到哪

广播的几个部分

1.发送广播的逻辑(需要先定义Intent方法,再进行send)

2.接收广播的逻辑(继承BroadcastReceiver方法)

3.开关控制广播,也就是注册广播的过程(对应的register方法)

Notice:广播注册又有动态注册和静态注册

动态注册实现广播的收发

MainActicity

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;

import com.example.myapplication.receiver.Receiver;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.button).setOnClickListener(this);         //添加按钮监听事件

    }

    Receiver receiver;                                              //创建接受器对象
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(Receiver.action);                //创建意图对象,传入参数为要发送的广播信息
        sendBroadcast(intent);                                      //发送广播信息
    }
//实现广播接收的开关
    @Override
    protected void onStart() {
        super.onStart();
        receiver = new Receiver();

        IntentFilter filter = new IntentFilter(Receiver.action);     //创建过滤器,只接收Receiver.action的广播
        registerReceiver(receiver, filter);                          //注册接收器
    }
    @Override
    protected void onStop() {
        super.onStop();
        unregisterReceiver(receiver);                                //注销接收器
    }
}

广播接收类

package com.example.myapplication.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
//继承广播接收者类
public class Receiver extends BroadcastReceiver {
    public static final String action = "abc";                     //设置广播内容,供发送和接收使用
    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent != null && intent.getAction().equals(action)){   //接收到广播打印信息
            Log.d("receiver","receiver successful");
        }
    }
}

效果 

有序广播

描述

给一堆广播设置优先级,有序接收

具体顺序
1、优先级越大的接收器,越早收到有序广播;
2、优先级相同,越早注册的接收器越早收到有序广播
实现

- 调用setPriority方法

//实现广播接收的开关
    @Override
    protected void onStart() {
        super.onStart();
        receiver = new Receiver();

        IntentFilter filter = new IntentFilter(Receiver.action);     //创建过滤器,只接收Receiver.action的广播
        filter.setPriority(8);                                       //设置优先级
        registerReceiver(receiver, filter);                          //注册接收器
    }

 静态注册(android8.0以后)

 - 需要通过component给静态注册的广播指定包名

@Override
    public void onClick(View v) {
        Intent intent = new Intent("广播内容");
        // 通过setComponent方法指定接收器的完整路径
        ComponentName componentName = new ComponentName(this, "receiverUrl");
        intent.setComponent(componentName);  // 设置意图的组件信息
        sendBroadcast(intent);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UmVfX1BvaW50

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值