说说在 Android 中如何发送自定义广播
发布日期:2021-06-29 21:09:59 浏览次数:2 分类:技术文章

本文共 1830 字,大约阅读时间需要 6 分钟。

1 发送标准广播

先新建一个广播接收器用于来接收自定义的广播:

public class MyReceiver extends BroadcastReceiver {
public MyReceiver() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"接收到自定义的广播",Toast.LENGTH_SHORT).show(); }}

然后修改 AndroidManifest.xml 文件,注册要监听的自定义广播(假设是 net.deniro.android.MY_BROADCAST):

接着在主布局文件中,添加一个按钮作为发送广播的触发点:

最后修改主活动的代码:

public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendBroadcast(new Intent("net.deniro.android.MY_BROADCAST")); } }); }}

这里通过 sendBroadcast() 方法来发送广播,这样所有监听这个广播的接收器就会收到消息。

接收到自定义广播

2 发送有序广播

广播是一种可以跨进程进行通信的方式,因此我们在应用程序中发出的广播,其他的应用程序也可以收到。

我们新建一个项目,然后再自定义一个广播接收器:

public class AnotherReceiver extends BroadcastReceiver {
public AnotherReceiver() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"接收到自定义的广播(AnotherReceiver)",Toast.LENGTH_SHORT).show(); }}

代码与之前的接收器代码类似,只是弹出的消息内容不同。

接着在 AndroidManifest.xml 文件中为接收器注册要监听的消息:

最后把这个项目安装到模拟器上,然后重新回到上一个项目 app,点击【发送广播】按钮,这时就会弹两次提示信息。

新的程序接收到广播消息

现在我们试试发送有序广播。 回到前面的项目,修改 Activity 中的代码:

sendOrderedBroadcast((new Intent("net.deniro.android.MY_BROADCAST")),null);

sendOrderedBroadcast() 方法接收两个参数,第一个是 Intent,第二个是与权限相关的字符串,这里我们传入 null。

通过 AndroidManifest.xml 文件中的 android:priority,可以设定广播接收器的先后顺序,我们为第一个接收器设定 android:priority

android:priority 的值越大,优先级就越高。

调用 abortBroadcast() 方法,就可以截断这条广播啦。

转载地址:https://deniro.blog.csdn.net/article/details/79413975 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:说说如何使用 Android 的本地广播
下一篇:说说在 Android 中如何接收系统广播

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月30日 04时56分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

DDD(Domain-Driven Design 领域驱动设计) 2019-04-30
SqlServer日期DateTime转varchar 2019-04-30
<!DOCTYPE html>作用是什么?严格模式(Standards)与混杂(quirk)模式如何区分?它们有何意义?严格模式与混杂模式的语句解析不同点有哪些? 2019-04-30
URL统一资源定位符、URI统一资源标识符和URN统一资源命名之前的联系和区别 2019-04-30
grid布局介绍(容器、项目、网格线、单元格、容器和项目属性template-columns|rows相关函数和相关关键字\gap\areas\flow\content\justify\align) 2019-04-30
ES6 let注意点、解构(重命名、默认值、结构给已有变量)、模块化(注意点、导入导出语法)、对象属性扩展写法 2019-04-30
知乎热议:未来3到5年内,哪个方向机器学习人才最稀缺? 2019-04-30
推荐几款好用的文本编辑器 2019-04-30
上海有哪些牛逼的互联网公司? 2019-04-30
美团外卖批量投放智能安全头盔:骑手可语音处理订单 2019-04-30
指甲盖大小塞了500亿晶体管!领先台积电,IBM打造世界首款2纳米芯片!能耗仅为7纳米的1/4!... 2019-04-30
武汉最牛批的互联网基本都在这了~ 2019-04-30
全网最全Python操作Excel教程,建议收藏! 2019-04-30
导弹如何自动追踪目标?这其实是个数学问题 2019-04-30
Mac电脑使用:Mac电脑查看本机的IP和公网IP的方法 2019-04-30
前端开发:自定义时间轴的使用 2019-04-30
Flutter开发:iOS 14+系统的iPhone在debug模式下运行App报错的解决方法 2019-04-30
Mac电脑使用:Mac电脑查看本机的IP和公网IP的方法 2019-04-30
NOI 2020 解题报告 2019-04-30
一道神奇的几何题 2019-04-30