- 浏览: 67340 次
- 性别:
- 来自: Mercury
最新评论
一、注册BroadcastReceiver的方法
BroadcastReceiver用于监听被广播的事件(事件的形式是Intent),为了达到这个目的,BroadcastReceiver必须进行注册,注册的方法有以下两种。
1.在AndroidManifest.xml当中进行注册。
上次说的内容。即使应用程序关闭了,当前程序依然处于活动状态,能够接收到广播。只要是注册了就会接收。
2.在应用程序的代码当中进行注册。
有时我们并不需要应用程序总是运行的,并且一直监听广播,所以此时我们可以使用在应用程序中进行注册BroadcastReceiver。
注册BroadcastReceiver:
registerReceiver(receiver,filter);
取消注册BroadcastReceiver:
unregisterReceiver(receiver);
如果一个BroadcastReceiver用于更新UI,那么通常会使用这种方法进行注册,在Activity启动的时候注册BroadcastReceiver,在Activity不可见以后取消注册。
实例程序:
BroadcastReceiverActivity02.java
package com.android.activity; import android.app.Activity; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class BroadcastReceiverActivity02 extends Activity { private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED"; private Button registerButton = null; private Button unregisterButton = null; private SMSReceiver smsReceiver = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); registerButton = (Button)findViewById(R.id.registerButton); unregisterButton = (Button)findViewById(R.id.unregisterButton); registerButton.setOnClickListener(new RegisterListener()); unregisterButton.setOnClickListener(new UnRegisterListener()); } class RegisterListener implements OnClickListener{ public void onClick(View v) { //生成BroadcastReceiver对象 smsReceiver = new SMSReceiver(); //生成一个IntentFilter对象 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(SMS_ACTION); //将BroadcastReceiver对象注册到系统中 BroadcastReceiverActivity02.this.registerReceiver(smsReceiver, intentFilter); } } class UnRegisterListener implements OnClickListener{ public void onClick(View v) { smsReceiver = new SMSReceiver(); BroadcastReceiverActivity02.this.unregisterReceiver(smsReceiver); } } }
SMSReceiver.java
package com.android.activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class SMSReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { System.out.println("receiver message"); } }
运行界面如下:
当点击注册监听器时,就会将SMSReceiver注册。此时如果发送短信就会被其捕获。在Eclipse的DDMS视图下Emulator
Control标签下可以模拟短信发送。
短信界面:
二、Android内置的BroadcastActions
在Android平台当中,内置了很多Action,用于帮助开发者监听手机上所发生的各种事件,以下是一些比较常见的Action,在帮助文档中Intent的常量中有完整的:
将接收的消息解析:
SMSReceiver.java
package com.android.activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; public class SMSReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("receiver message"); //将消息进行解析 //接收Intent对象中的数据 Bundle bundle = intent.getExtras(); //在Bundle对象中有一个属性pdus,这个属性的值是一个object数组 Object[] objectPDUS = (Object[])bundle.get("pdus"); //创建一个SmsMessage类型的数组 SmsMessage[] messages = new SmsMessage[objectPDUS.length]; for(int i = 0;i<objectPDUS.length;i++){ //使用object数组当中的对象创建SmsMessage对象 messages[i] = SmsMessage.createFromPdu((byte[])objectPDUS[i]); //调用SmsMessage对象的输出消息方法 System.out.println(messages[i].getDisplayMessageBody()); } } }
发表评论
文章已被作者锁定,不允许评论。
-
Android40_Dialog
2011-11-14 00:11 2990Dialog是Android常用的对话框控件。AlertDia ... -
Android39_Clock和TimePicker
2011-11-14 00:08 2351一、AnalogClock和DigitalClock ... -
Android38_ImageView和Gallery
2011-11-14 00:07 3607一、ImageView使用方法 ImageVi ... -
Android37_JSON数据解析
2011-11-08 00:14 2338一、JSON介绍 JSON(JavaSc ... -
Android36_Animations使用(四)
2011-11-08 00:14 3412一、LayoutAnimationsContrlller ... -
Android35_Animations使用(三)
2011-11-08 00:13 2642一、AnimationSet的具体使用方法 ... -
Android34_Animations使用(二)
2011-11-08 00:12 1948在代码中使用Animations可以很方便的调试、运行 ... -
Android33_Animations使用(一)
2011-11-08 00:12 2276一、Animations介绍 Anima ... -
Android31_AppWidget使用(二)
2011-11-05 00:09 2497一、PendingIntent介绍 PendingIn ... -
Android30_AppWidget使用(一)
2011-11-05 00:08 2256一、App Widget定义 App ... -
Android32_Notification用法
2011-11-05 00:09 1880Android系统的状态栏(Status Bar)中有一 ... -
Android29_SeekBar和RatingBar
2011-11-02 23:21 2110一、使用SeekBar步骤: SeekB ... -
Android28_ExpandableListActivity
2011-11-02 23:21 1481ExpandableListActivity就是可扩展的 ... -
Android27_AutoCompleteTextView
2011-11-02 23:21 1080一、创建AutoCompleteTextView ... -
Android26_DatePicker
2011-11-02 23:20 1775一、DatePicker和DatePickerDialo ... -
Android25_Spinner使用方法
2011-11-02 23:20 2810一、创建Spinner的步骤 1.在布局 ... -
Android24_Service初步
2011-10-18 22:27 1001一、Service概念 ... -
Android23_Socket编程
2011-10-18 22:19 1503一、什么是Socket Socket是基 ... -
Android22_WIFI网络操作
2011-10-18 22:12 1687一、什么是WIFI WIFI就是一种无线 ... -
Android20_广播机制(一)
2011-10-18 21:48 1074一、Android广播机制介绍 Android:操作系统 ...
相关推荐
关于组织参加“第八届‘泰迪杯’数据挖掘挑战赛”的通知-4页
PyMySQL-1.1.0rc1.tar.gz
技术资料分享CC2530中文数据手册完全版非常好的技术资料.zip
docker构建php开发环境
VB程序实例,可供参考学习使用,希望对你有所帮助
pytz库的主要功能 时区转换:pytz库允许用户将时间从一个时区转换到另一个时区,这对于处理跨国业务或需要处理多地时间的数据分析尤为重要。 历史时区数据支持:pytz库不仅提供了当前的时区数据,还包含了历史上不同时期的时区信息,这使得它在处理历史数据时具有无与伦比的优势。 夏令时处理:pytz库能够自动处理夏令时的变化,当获取某个时区的时间时,它会自动考虑是否处于夏令时期间。 与datetime模块集成:pytz库可以与Python标准库中的datetime模块一起使用,以确保在涉及不同时区的场景中时间的准确性。
VB程序实例-为程序添加快捷键.zip
画2、3维的隐含数
pytz库的主要功能 时区转换:pytz库允许用户将时间从一个时区转换到另一个时区,这对于处理跨国业务或需要处理多地时间的数据分析尤为重要。 历史时区数据支持:pytz库不仅提供了当前的时区数据,还包含了历史上不同时期的时区信息,这使得它在处理历史数据时具有无与伦比的优势。 夏令时处理:pytz库能够自动处理夏令时的变化,当获取某个时区的时间时,它会自动考虑是否处于夏令时期间。 与datetime模块集成:pytz库可以与Python标准库中的datetime模块一起使用,以确保在涉及不同时区的场景中时间的准确性。
加载虚拟光驱并打开ma软件.
VB程序实例-图像的缩小.zip
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
推荐几个国外 Java 大佬的优质博客.docx
Arduino一分钟快速在vs code 编译开发Arduino
强网杯objective-c可视化演示5中的常见排序算法,包括选择排序、气泡排序、插入排序、快速排序、堆排序等.zip
VB程序实例,可供参考学习使用,希望对你有所帮助
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
强网杯
技术资料分享AT070TN92非常好的技术资料.zip