Android入门第45天-手工发送一个BroadCast

news2024/11/27 13:08:55

简介

上一篇我们讲了简单的动态BroadCast,今天我们通过手工来发送一条BroadCast进一步来了解BroadCast。

在上一篇里我们使用BroadCast监听网络状态,今天我们要完成的是自己发一条自自己的消息来触发BroadCast Receiver。

设计

为了让Receiver收听到我们自己发送的自定义消息,我们需要在Receiver注册在AndroidManifest.xml文件中多添加一点东西,它长成下面这个样:

        <receiver
            android:name=".SimpleBroadCastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="org.mk.demo.broadcast.SimpleBroadCast"/>
            </intent-filter>

        </receiver>

来看Receiver类。

SimpleBroadCastReceiver

package org.mk.android.demo.demo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class SimpleBroadCastReceiver extends BroadcastReceiver {
    private final String ACTION_BOOT = "org.mk.demo.broadcast.SimpleBroadCast";
    private final String TAG = "SendBroadCast";

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.
        if (intent.getAction().equals(ACTION_BOOT)) {
            Log.i(TAG, "receive: " + ACTION_BOOT);
            Toast.makeText(context, "receive: " + ACTION_BOOT, Toast.LENGTH_LONG).show();
        }
    }
}

看这边,这边我们使用了onReceive方法内传入的Intent里的getAction来判断,这条消息是不是来自于我们自定义的BroadCast。

这个BroadCast来自于我们的Activity里的button的onclick动作。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/buttonSendBroadCast"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="发送一条BroadCast信息"/>
</LinearLayout>

它长下面这个样子。

 然后我们来看这个按钮的onClick事件吧。

MainActivity.java

package org.mk.android.demo.demo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    private Button buttonSendBroadCast;
    private final String TAG = "SendBroadCast";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonSendBroadCast = (Button) findViewById(R.id.buttonSendBroadCast);
        buttonSendBroadCast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.i(TAG,"start send broadcast");
                Intent bIntent=new Intent("org.mk.demo.broadcast.SimpleBroadCast");
                bIntent.addFlags(Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
                sendBroadcast(bIntent);
            }
        });
    }
}

从代码里可以看到,我们传送了一个消息为“org.mk.demo.broadcast.SimpleBroadCast”。这让它可以触发我们的SimpleBroadCastReceiver里的onReceive方法。

运行效果

在点击该按钮时,我们的APP收到了自定义的BroadCast并显示了以下这条Toast在屏幕上。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙耳机无延迟哪款好?适合打游戏的无线蓝牙耳机

手机可以说是人手必备&#xff0c;随声得还有蓝牙耳机&#xff0c;随着3.5耳机孔得消失&#xff0c;蓝牙耳机可以说是现在得主流&#xff0c;无论哪个年龄段都可以佩戴蓝牙耳机&#xff0c;日常听歌、追剧&#xff0c;和朋友玩游戏佩戴蓝牙耳机&#xff0c;已经成为一种生活方式…

mybatis06:MyBatis的多表操作

目录 1.一对一关系 2.一对多查询 3.多对多查询 4例题演示 ​5.知识小结 1.一对一关系 2.一对多查询 3.多对多查询 4例题演示 前置准备 对应的依赖 <dependencies><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId&…

外汇交易:流行图表指标盘点

您所学到的关于交易的一切都像一种工具&#xff0c;已被添加到外汇交易者的工具箱中。当您在正确的时间使用正确的工具时&#xff0c;您的图表指标工具将为您提供更好的机会做出正确的交易决策。 布林带 布林带用来衡量市场的波动性。它们的作用类似于迷你支撑位和阻力位。 布…

MES系统为何与工厂数字化转型联系紧密

随着数字化技术的发展&#xff0c;MES系统的定义也是在不断的变化。但是&#xff0c;计划调度、质量管理、生产执行以及数据采集&#xff0c;一直都是MES的核心功能。 工厂数字化改造&#xff0c;对于制造业来说并不是一场革命。很多工厂在十年前就实现了车间设备的联网&#…

EXCEL基础:数据有效性设置与从身份证号码提取出生日期、性别操作

如下所示&#xff0c;为某公司的人员信息表&#xff0c;以下操作均是基于该表格&#xff0c;声明&#xff1a;该表格来自网络&#xff01; 下面进行【数据有效性】的设置&#xff1a; 先选中区域&#xff0c;弹出【数据有效性】对话框&#xff0c;在【设置】里的【允许】里输入…

win11设置java环境变量

python环境变量比java简单很多&#xff0c;而java比较麻烦&#xff0c;下面这些步骤应该是一步不能少&#xff0c;必须新建两个而且移动到最上面 一、找到设置环境变量 只要是windows系统&#xff0c;他就长这样&#xff0c;需要找到这个页面 很多之前的文章都会说&#xff1…

[附源码]Node.js计算机毕业设计电影院订票系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

六、作用域,作用域链,预编译,闭包基础

六、作用域&#xff0c;作用域链&#xff0c;预编译&#xff0c;闭包基础 使用AO,GO说明作用域和作用域链 AO与函数有关&#xff0c;函数能创造出独立的空间&#xff0c;但是这句话不太对&#xff0c;接下来就是解释&#xff1a; 对象 每个对象都有属性和方法&#xff1a; …

MobileNetV2原理说明及实践落地

本文参考&#xff1a; 轻量级网络——MobileNetV2_Clichong的博客-CSDN博客_mobilenetv2 1、MobileNetV2介绍 MobileNetV1主要是提出了可分离卷积的概念&#xff0c;大大减少了模型的参数个数&#xff0c;从而缩小了计算量。但是在CenterNet算法中作为BackBone效果并不佳&…

【MATLAB教程案例59】使用matlab实现基于LSTM网络的数据分类预测功能与仿真分析

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 1.软件版本 2.LSTM网络理论概述

荧光点击试剂ICG-N3, ICG-azide,根据具体的需求进行定制, 避免频繁的溶解和冻干,取用时注意干燥

【英文名称】 ICG-azide&#xff0c;ICG-N3 【结 构 式】 【CAS】N/A 【分子式】C48H56N6O4S 【分子量】813.07 【基团】叠氮基基团 【纯度】95% 【规格】1mg&#xff0c;5mg&#xff0c;10mg 【是否接受定制】根据具体的需求进行定制 【外观】 绿色固体&#xff08;具…

最小二乘问题,,而不是方法

最小二乘是一大类问题&#xff0c;而不是一个简单的方法 适用于&#xff1a;线性&#xff08;非线性&#xff09;方程组问题&#xff0c;如果观测带有噪声&#xff0c;我们需要建立最小二乘模型。如果噪声符合高斯分布&#xff0c;即最小二乘问题的解对应于原问题的最大似然解…

千万不要做“舔狗式”营销

不知道在网上做生意的你们是否经常陷入我下面说的这几种尴尬境地&#xff1a;每天都在推广引流&#xff0c;每天都在发广告&#xff0c;但转化率却低得可怜。粉丝质量普遍不行&#xff0c;不精准&#xff0c;好不容易来几个粉&#xff0c;不是白嫖党就是垃圾粉。两句话不对头&a…

C++实现红外Fir谱图文件转BMP图片文件

1、红外图谱文件 红外图谱文件由文件头和温度数据两部分组成,其中文件头 64 个字节,其余字节为温度数据。 如下如: 每个像素用两个字节表示温度(16 位有符号短整数),低字节在前,高字节在后,温度数据单位为 0.1℃,温度数据共 w h 2 字节。文件头定义 如下: 从文件…

Android Studio 开发环境搭建 配置

前言 上一次做 Android 开发还是在大三的 Android 课设项目上「 IPOD - 本地音乐播放器」 开发环境&#xff1a;JDK开发语言&#xff1a;Java开发工具&#xff1a;Android Studio 现在由于工作需要 「面向业务编程」&#xff0c;需要重拾 Android 开发&#xff0c;由于电脑已换…

mysql基础学习(2)-regexp正则表达式的学习

表示例 user 学习&#xff1a; ^匹配以^后面字符开头的所有数据&#xff0c;示例&#xff1a;^str&#xff0c;则匹配str开头的所以数据$匹配以$前面面字符结尾的所有数据&#xff0c;示例&#xff1a;str$&#xff0c;则匹配str结尾的所以数据. 匹配任何单个字符&…

嵌入式分享合集121

一、Matter协议 不是广告啊就是看见了就搬来了 也没用过啊~ 早在2019年底&#xff0c;中国就已成为全球最大的智能家居消费国&#xff0c;占全球智能家居消费市场份额的50%-60%&#xff1b;2021年&#xff0c;中国智能家居市场规模约为5880亿元&#xff0c;同比增长12.7%&…

使用github的pages配合action自动部署vue项目

如果你需要某个 action&#xff0c;不必自己写复杂的脚本&#xff0c;直接引用他人写好的 action 即可&#xff0c;整个持续集成过程&#xff0c;就变成了一个 actions 的组合。这就是 GitHub Actions 最特别的地方。 GitHub 做了一个官方市场&#xff0c;可以搜索到他人提交的…

安全研究 # 课题:二进制成分分析(Binary SCA)

本文参考多篇文章写作而成&#xff0c;出处在文末注明(本文在课题开展过程中长期保持更新)。 二进制成分分析 SCA&#xff08;Software Composition Analysis&#xff09;软件成分分析&#xff0c;通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、…

奶茶果茶饮品店数字化转型| 奶茶店小程序 | 餐饮外卖系统

奶茶/果茶/饮品店里总是容易聚集大量年轻消费者&#xff0c;尤其品牌开新店或搞促销&#xff0c;往往会排很长的队伍&#xff0c;而茶饮店也会根据季节推出相应的新品或冷热饮品&#xff0c;以保证消费者在任何时候都能喝到应季的饮品。 年轻人是奶茶饮品店的主要消费者&#x…