Android入门之实现手工发送一个BroadCast
作者:TGITCIC 发布时间:2023-08-10 13:54:16
标签:Android,发送,BroadCast
简介
上一篇我们讲了简单的动态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在屏幕上。
来源:https://blog.csdn.net/lifetragedy/article/details/128305595


猜你喜欢
- 前言ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。我们知道,ConcurrentHas
- 一、概述顶部ViewPager指示器的字体变色,该效果图是这样的:大概是今天头条的app,神奇的地方就在于,切换ViewPager页面的时候
- 从Microsoft .Net 2.0版本以后,就默认提供了System.IO.Ports.SerialPort类,用户可以非常简单地编写少
- 接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变
- 本文实例讲述了Android播放器MediaPlayer实现均衡器效果。分享给大家供大家参考,具体如下:这几天在系统学习Android官方A
- 本文实例讲述了C#实现的阴历阳历互相转化类。分享给大家供大家参考,具体如下:最近郁闷地发现网上现有的相当一部分万年历上干支纪年的算法都是错误
- 本篇分享的是springboot多数据源配置,在从springboot v1.5版本升级到v2.0.3时,发现之前写的多数据源的方式不可用了
- 成员类型访问权限低于字段本身现在假设你有一个小兵类,他的访问权限是仅限当前程序集。internal class 小兵{public int
- 主要是重写attemptAuthentication方法导入依赖<dependency><groupId>org.s
- OAuth 简介OAuth 是由 Blaine Cook、Chris Messina、Larry Halff 及 David Recordo
- 今天给大家介绍一下Java实现钢琴的小程序,程序虽小,功能挺多,支持循环播放,录音等功能,首先简单介绍下源码结构:先看看钢琴界面实现,添加相
- Android setButtonDrawable()的兼容问题解决办法setButtonDrawable()的兼容问题API1
- 之前写过3篇手势密码的demo,不过没有集成到真实的企业项目中,这几天正好领到一个手势密码项目,昨天刚好弄完,今天抽空整理下,目前还没有完善
- 一、业务背景有些业务请求,属于耗时操作,需要加锁,防止后续的并发操作,同时对数据库的数据进行操作,需要避免对之前的业务造成影响。二、分析流程
- // Create a handler for a click event.button1.Click += delegate(System
- 本节,我们从Rxjava使用代码入手,去结合自己已有的知识体系,加查阅部分源码验证的方式,来一起探索一下Rxjava实现的基本原理。为了本文
- 一、概述1.1 什么是Java工厂模式Java工厂模式是一种创建对象的设计模式,它提供了一种方法,通过该方法可以在不暴露对象创建逻辑的情况下
- 1.写个Mybatis-plus配置类:是通过 * 实现分页@Configurationpublic class MybatisConfig
- 本文实例讲述了C#全局热键设置与窗体热键设置,分享给大家供大家参考。具体实现方法如下:1、窗体热键首先要设置主窗体KeyPreview为tr
- IDEA配置阿里规范插件P3C进入idea -》File -》 Settings -》Plugins到搜索框中搜索:Alibaba Java