文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 01:18

关注

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编程实现全局获取Context及使用Intent传递对象的方法详解Android 隐式Intent的实例详解Android编程使用Intent传递图片的方法详解Android Studio Intent隐式启动,发短信,拨号,打电话,访问网页等实例代码Android 通过Intent使用Bundle传递对象详细介绍Android Intent调用 Uri的方法总结


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯