Android Intent发送广播消息实例详解

发布时间 - 2026-01-11 00:36:05    点击率:

Android Intent发送广播消息

Intent的另一种用途是发送广播消息,应用程序和Android系统都可以使用Intent发送广播消息,广播消息的内容是可以与应用程序密切相关的数据信息,也可以是Android的系统信息,例如网络连接变化、电池电量变化、接收的短信或系统设置变化等。如果应用程序注册了BroadcastReceiver,则可以接受到指定的广播信息。

使用Intent发送广播消息非常简单,只须创建一个Intent,并调用sendBroadcast()函数就可把Intent携带的信息广播出去。但需要注意的是,在构造Intent时必须定义一个全局唯一的字符串,用来标识其要执行的动作,通常使用应用程序包的名称。如果要在Intent传递额外数据,可以用Intent的putExtra()方法。下面的代码构造了用于广播消息的Intent,并添加了额外的数据,然后调用sendBroadcast()发送广播消息:

String UNIQUE_STRING="edu.hrbeu.BroadcastReceiverDemo";
Intent intent=new Intent(UNIQUE_STRING);
intent.putExtra("key1","value1");
intent.putExtra("key2","value2");
sendBroadcast(intent);

BroadcastReceiver用于监听广播消息,可以在AndroidManifest.xml文件或代码中注册一个BroadcastReceiver,并使用Intent过滤器指定要处理的广播消息。创建BroadcastReceiver须要继承BroadcastReceiver类,并重载onReceive()方法。示例代码如下:

public class MyBroadcastReceiver extends BroadcastReceiver{
 @Override
 public void onReceive(Context context,Intent intent){
 //TODO: React to the Intent received.
 }
}

当Android系统接收到与注册BroadcastReceiver匹配的广播消息时,Android系统会自动调用这个BroadcastReceiver接收广播消息。在BroadcastReceiver接收到与之匹配的广播消息后,onReceiver()方法会被调用,但onReceive()方法必须要在5秒钟内执行完毕,否则Android系统会认为该组件失去响应,并提示用户强行关闭该组件。

下面为一个简单示例

发送广播消息关键代码

botton.setOnClickListener(new OnClickListener()){
  public void onClick(View view){
   Intent intent=new Intent("edu.hrbeu.BroadcastReceiverDemo");
   intent.putExtra("message",entryText.getText().toString());
   sendBroadcast(intent);
  }
 }};

在AndroidManifest.xml 文件中注册 BroadcastReceiver

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

 <application
  android:allowBackup="true"
  android:icon="@mipmap/ic_launcher"
  android:label="@string/app_name"
  android:supportsRtl="true"
  android:theme="@style/AppTheme">
  <activity
   android:name=".BroadcastReceiverDemo"
   android:label="@string/app_name"
   >
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <receiver android:name=".MyBroadcastReceiver">
   <intent-filter>
   <action android:name="edu.hrbeu.BroadcastReceiverDemo"/>
   </intent-filter>
  </receiver>
 </application>

</manifest>

在AndroidManifest.xml文件中创建了一个< receiver >节点,其中声明了Intent过滤器的动作为 edu.hrbeu.BroadcastReceiverDemo,这与发送广播消息中的Intent的动作一致,表明这个BroadcastReceiver可以接受动作为edu.hrbeu.BroadcastReceiverDemo 的广播消息。

MyBroadcastReceiver.Java中创建了一个自定义的BroadcastReceiver,其核心代码如下:

public class MyBroadcastReceiver extends BroadcastReceiver{
 @Override
 public void onReceive(Context context,Intent intent){
 String msg=intent.getStringExtra("message");
 Toast.makeText(context,msg,Toast.LENGTH_SHORT).show();
 }
}

代码第一行首先继承了BroadcastReceiver类,并在第3行重载了onReveive()函数。当接收到AndroidManifest.xml文件定义的广播消息后,程序将自动调用onReveive()函数进行消息处理。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # Intent发送广播  # Intent  # 广播消息  # Android仿微信发送语音消息的功能及示例代码  # SpringBoot webSocket实现发送广播、点对点消息和Android接收  # Android之利用EventBus发送消息传递示例  # Android使用广播发送消息  # 应用程序  # 要在  # 的是  # 可以用  # 并在  # 希望能  # 自定义  # 可以使用  # 与之  # 谢谢大家  # 则可  # 这与  # 创建一个  # 需要注意  # 只须  # 系统设置  # 可把  # 为该  # 法会  # 程序包 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  油猴 教程,油猴搜脚本为什么会网页无法显示?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  浅谈redis在项目中的应用  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  手机软键盘弹出时影响布局的解决方法  如何自定义建站之星网站的导航菜单样式?  如何在IIS7上新建站点并设置安全权限?  如何打造高效商业网站?建站目的决定转化率  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  在线教育网站制作平台,山西立德教育官网?  Laravel中的withCount方法怎么高效统计关联模型数量  网页设计与网站制作内容,怎样注册网站?  如何挑选最适合建站的高性能VPS主机?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  零服务器AI建站解决方案:快速部署与云端平台低成本实践  JavaScript中的标签模板是什么_它如何扩展字符串功能  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  如何破解联通资金短缺导致的基站建设难题?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何为不同团队 ID 动态生成多个独立按钮  php 三元运算符实例详细介绍  简历没回改:利用AI润色让你的文字更专业  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  浅谈javascript alert和confirm的美化  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Laravel如何配置Horizon来管理队列?(安装和使用)  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  5种Android数据存储方式汇总  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  EditPlus中的正则表达式 实战(1)  JavaScript如何实现音频处理_Web Audio API如何工作?  免费网站制作appp,免费制作app哪个平台好?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何在万网主机上快速搭建网站?  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何基于云服务器快速搭建个人网站?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  WEB开发之注册页面验证码倒计时代码的实现