Android Broadcas 广播

Permission Denial: not allowed to send broadcast in android 注 意:只有系统appliaction才能在其AndroidManifest.xml中定义Protected Broadcast,系统appliaction包括/system/framework、/system/app、vendor/app下的 package,因此设备中安装的第三方apk中如果定义了Protected Broadcast,那么这个Protected Broadcast将不生效。代码中可以看到<protected-broadcast>标记的具体写法,如下。 阅读详情

一、广播简介

1. Android四大组件之一

2. 一种全局的监听器,用于监听系统全局的广播消息

3. 系统大部分消息都以广播的形式发布,比如开机启动完成的消息,收到短信的消息,打进打出电话的消息。

ex:

Android系统每次启动完成会向外广播一条信息,告诉所有人启动完成了,只有继承自Broadcast 的类能捕捉到这些系统信息,捕捉到信息该干嘛就干嘛


二、广播实现(自定义广播接收者和发送者)


三、广播的分类

一般广播的发送者会分为    无序广播  和  有序广播

而接收者一般分为    静态接收者  和  动态接收者


无序广播的发送代码:

 //发送广播
        //两种类型广播   有序广播   无序广播
        Intent intent=new Intent();
        //指定广播的名字
        intent.setAction("com.example.myas_send.Hug");
        //指定广播内容
        intent.putExtra("content",content);
        //发送无序广播
        sendBroadcast(intent);

而无序广播的还有一个特殊的种类,叫做“无序黏性广播”

	//发送无序黏性广播
 	sendStickyBroadcast(intent);

有序广播的区别也只是在于一句发送代码的不同

 	//发送有序广播
        sendOrderedBroadcast(intent,null);

里面的那个null 是一个指令,可以填写其他的,如果接收者每有添加指令就接收不到发送的信息



接下来我们来讲接收者

先来讲解动态接收者:动态接收者主要是由Java代码编写,需要注册广播和注销广播

package com.example.myas_jiesou_01;

import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private IntentFilter intentFilter;
    private MyReceiver01 myReceiver01;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myReceiver01=new MyReceiver01();
        intentFilter = new IntentFilter();
        intentFilter.addAction("com.example.myas_send.Hug");
        intentFilter.setPriority(998);
    }

    @Override
    protected void onResume() {
        super.onResume();
        //注册广播
        registerReceiver(myReceiver01,intentFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //取消注册  注销
        unregisterReceiver(myReceiver01);
    }
}

上面代码中有一条红色的代码,标识出来主要是因为它只能是接收有序信息的时候用,它的作用是设置优先级,一般优先级为  -1000到1000,-1000为最低,1000为最高。


接下来是静态的接收者:静态接收者主要是在XML文件中配置,这和动态是有区别的

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myas_jiesou_02">

    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".MyReceiver02">
            <intent-filter android:priority="1000">
                <action android:name="com.example.myas_send.Hug"></action>
            </intent-filter>
        </receiver>
    </application>

</manifest>

上面代码中用红色注释的代码即为配置的代码


java代码部分主要是用来接收广播发出的信息,下面的代码中我们还做了一个加工,是一个用来拦截垃圾信息的,比如,下面代码中是信息中带“免费”二字的会被拦截,将不会被接收

package com.example.myas_jiesou_02;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

/**
 * Created by Administrator on 2017/7/11 0011.
 */

public class MyReceiver02 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
       String action=intent.getAction();
        if("com.example.myas_send.Hug".equals(action)){
            //获取广播内容
            String content=intent.getStringExtra("content");
            Log.i("test","广播接受者2号:"+content);

            //判断
            if(content.contains("免费")){
                //不传播
                abortBroadcast();
            }

            //改变广播的内容
            //设置结果
            Bundle bundle=new Bundle();
            bundle.putString("newContent",content+",开玩笑的,你阔以免费拥有小灰灰");
            setResultExtras(bundle);
        }
    }
}



下面我们来讲讲动态接收和静态接收的区别

一、 动态接收的优先级是大于静态接收的,除非用有序发送时设置了静态接收的优先级大于动态优先级。

  二、 静态接收就算关闭了它也能接收到广播发送的信息,而动态接收必须是无序黏性广播发送信息才能在离开时接收到信息。



(十五)CX20106A 中超声波测量的应用 阅读详情

相关推荐

从机械臂示教到厨房做饭:ACT模仿学习如何让机器人更“人性化”?

本文探讨了ACT(Action Chunking with Transformers)模仿学习技术如何让机器人更“人性化”,特别是在厨房等复杂场景中的应用。通过动作分块(Action Chunking)和时态融合(Temporal Ensemble)技术,机器人能够像人类一样记忆和执行复杂任务,如烹饪。文章还分析了ACT在家庭场景中的落地挑战及其在康复医疗、柔性制造等领域的跨领域应用潜力。

weixin_30613343的博客 255

Android四大组件——Broadcast Receiver

Broadcast Receiver  完整代码请见:longlong’s github 广播(Broadcas)是一种广泛运用的在应用程序之间传输信息的机制 。而 广播接收者是对发送出来的广播进行过滤接收并响应的一类组件。广播接收者(BroadcastReceiver) BroadcastReceiver 自身并不实现图形用户界面,但是当它收到某个通知后, BroadcastReceiver 可以

longlong's blog 376

Simeck算法流程

算法流程 paper在此:https://eprint.iacr.org/2015/612.pdf x ⋘\lll⋘ c denotes the cyclic shift of x to the left by c bits. x & y is the bitwise AND of x and y. x⊕yx \oplus yx⊕y is the exclusive-or (XOR) of x and y. github代码在此:https://github.com/bozhu/Simeck

Simp123 1074

Android之旅---广播(BroadCast)

什么是广播          在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android中的广播机制就和这个差不多的道理。 电台发送的内容是语音,而在Android中...

weixin_34355715的博客 194

QMT Python API 实战指南:从安装到策略开发的完整流程

本文提供了一份详尽的QMT Python API实战指南,涵盖从环境配置到策略开发的完整流程。文章深入解析了xtdata行情模块与xttrader交易模块的核心架构与协作方式,并通过一个双均线策略实例,手把手教你如何获取数据、计算信号并执行交易,是量化交易开发者快速上手QMT Python接口文档的实用教程。

butter的博客 1415

Dofbot机械臂从零部署笔记(1)——ROS之创建URDF模型、配置Moveit和MotionPlanning

Dofbot机械臂从零部署笔记(1)——ROS之创建URDF模型、配置Moveit和MotionPlanning

takedachia的博客 8697

Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.int

crash information: Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.HEADSET_PLUG from     at android.os.Parcel.readException(Parcel.java

xueqiang911226的博客 3941

VTK四视图联动避坑指南:解决vtkImagePlaneWidget窗宽窗位同步与切片序号更新的那些坑

本文详细解析了VTK四视图联动开发中的关键技术点与常见问题,包括切片位置同步、窗宽窗位同步的实现原理及回调机制设计。针对开发中遇到的回调事件不触发、渲染性能低下等问题,提供了实用的解决方案和优化技巧,帮助开发者高效构建医学影像和科学可视化应用。

weixin_42638178的博客 391

Android Broadcas 广播

一、广播简介 1. Android四大组件之一 2. 一种全局的监听器,用于监听系统全局的广播消息 3. 系统大部分消息都以广播的形式发布,比如开机启动完成的消息,收到短信的消息,打进打出电话的消息。 ex: android系统每次启动完成会向外广播一条信息,告诉所有人启动完成了,只有继承自Broadcast 的类能捕捉到这些系统信息,捕捉到信息该干嘛就干嘛 二、广播

qq_38946471的博客 323

CarSim转向控制对比指南:开环扭矩控制vs转角控制(附Simulink连接示例)

本文深入对比了CarSim中车轮转角控制与开环扭矩控制的核心原理与适用场景。开环扭矩控制能激活完整的转向系统动力学,更适用于EPS控制策略开发与驾驶员在环仿真等对真实性要求高的场景。文章提供了详细的Simulink接口配置步骤与连接示例,为车辆动力学仿真工程师提供了清晰的决策与实操指南。

weixin_29199873的博客 478

探索gtwr of mgtwr in python

代码】探索gtwr of GWmodel in python。

m0_46268055的博客 3388

Android广播BroadcastReceiver

Android广播BroadcastReceiver  Android 系统里定义了各种各样的广播,如电池的使用状态,电话的接收和短信的接收,开机启动都会产生一个广播。当然用户也可以自定义自己的广播。 既然说到广播,那么必定有一个广播发送者,以及广播接收器。系统广播的发送者为系统,自定义广播当然是用户定义的了。 我们可以定义一个广播接收器,用来接收我们感兴趣的广播,不论是系统

tmj2014的专栏 3080

COSMO-RS理论:流体相热力学预测的核心模型与技术突破

摘要:COSMO-RS模型通过量子化学计算分子表面电荷分布,实现了从微观量子尺度到宏观化工过程的热力学预测。该模型基于介电连续介质理论,将分子表面片段化处理,通过σ-剖面描述电荷分布,并计算片段间的静电失配能和氢键能。其核心算法通过自洽化学势方程求解活度系数,克服了传统模型依赖实验参数的局限。随着技术进步,模型引入了高阶描述符和色散力修正,提升了预测精度。在药物研发、化工分离等领域广泛应用,但仍存在对长程有序结构预测不足等局限性。该模型为复杂体系的热力学性质预测提供了重要理论工具。

ASKCOS博客 973

android面试题集锦2 广播机制

Android 的广播机制在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。下面我画一张粗略的图来帮助大家理解广播的运行机制。   Android 中有各式各样的广播,各种广播在Android 系统中运行,当系统/应用程序运行时便会向 Android 注册各种广播,Android 接收到

wsh51886的专栏 849

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

广播发送者&广播接收者介绍

1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据; 广播意图就是通过Context.sendBroadcast(Intent intent)或Context.send...

weixin_30713953的博客 285

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android之系统广播

//关闭或打开飞行模式时的广播  Intent.ACTION_AIRPLANE_M; //充电状态,或者电池的电量发生变化;//电池的充电状态、电荷级别改变,不能通过组建声;  Intent.ACTION_BATTERY_CH; //表示电池电量低  Intent.ACTION_BATTERY_LO; //表示电池电量充足  Intent.ACTION_BATTERY_O

梦想是会飞的猪的博客 319

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android四大组件之broadcastreceiver(广播)

广播: 广播分为无序广播和有序广播,其中有序广播又分为动态有序广播和静态有序广播,无序广播与有序广播类似。 有序广播与无序广播区别:1.有序广播有优先级,优先级大的先执行,setPriority来设置优先级的值   2.有序广播发送方法为sendOrderedBroadcast(intent, null);无序广播发送方法为sendBroadcast(intent); 动态广播与静态广播的区

qq_36798516的博客 275

BroadcastReceiver-有序广播

Order broadcasts 有序广播 使用:context.sendOrderBradcast() 有序广播比较特殊,它每次只发送到优先级较高的接收者那里 然后由高到低,高的可以阻止低的 短信拦截 在注册广播的时候可以使用优先级android:priority属性 这个属性的范围在 -1000到1000, 数值越大优先级越高

android_gjw的博客 407

android学习教程--广播机制

android学习教程—广播机制一、知识概要1、 注册BroadcastReceiver的方法2、 Android内置的BroadcastActions二、知识详解         所谓广播机制是指,当触发一个事件时会做出相应的动作,比如说当别人发一条短信给你

wendy_Remax山窝窝 562

广播接收者BroadcastReceiver的使用

广播接收者 现实中:电台要发布消息,通过广播把消息广播出去,使用收音机,就可以收听广播,得知这条消息 Android中:系统在运行过程中,会产生会多事件,那么某些事件产生时,比如:电量改变、收发短信、拨打电话、屏幕解锁、开机,系统会发送广播,只要应用程序接收到这条广播,就知道系统发生了相应的事件,从而执行相应的代码。使用广播接收者,就可以收听广播 创建广播接收者 定义java类继承Broad...

LiPine的专栏 1138

Android中,Broadcas介绍

什么是广播 在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android中的广播机制就和这个差不多的道理。 电台发送的内容是语音,而在Android中...

weixin_30616969的博客 139

开源 java android app 开发(十)广播机制

本文记录了Android应用开发中广播机制的学习过程,主要包含两部分内容:一是两个APP之间的广播通讯实现,通过自定义广播发送方(APP1)和接收方(APP2)展示了Intent发送、BroadcastReceiver注册以及跨进程消息传递;二是基于Service和广播机制的网络文件下载系统,使用OkHttp实现带进度显示的APK下载功能,通过广播更新UI进度条,并处理文件存储权限和下载管理。文中详细提供了XML布局、Java代码实现及权限配置,涵盖了广播注册/注销、服务绑定、线程间通信等关键技术点,最后展

ajassi2000的博客 949

android阻止广播发送,权限拒绝:不允许发送广播的Android

我想从我的应用程序中添加电话会议,通过反射在尝试,如果canDial是真还是假,但回到安全exception.Attached是日志文件。权限拒绝:不允许发送广播的Android01-07 04:24:36.890: E/AndroidRuntime(1062): FATAL EXCEPTION: main01-07 04:24:36.890: E/AndroidRuntime(1062): ja...

weixin_30810127的博客 1489

Android之粘性广播理解

BroadcastReceiver,作为一个广播接收者,因为android组件之间消息的传递基于intent,所以广播接收者想要接收什么类型的广播,将receiver标签下的intent-filter标签下的action标签的值置为那个广播类型即可,如 [html] view plaincopyprint? receiver android:name=".Incomi

sir_zeng的专栏 1170
上一篇: 系统广播大全
下一篇: ContentProvider和ContentResolver
南岸北栀
博客等级 码龄10年 32粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值