Android 中BroadCast Receiver可以用来侦听广播事件。在使用Broadcast 之前,必须使用代码或是在AndroidManifest.xml进行注册。
下面的例子实现使用短信来触发AndroidGraphics2DTutorial中的示例。短信格式为:@demo:xxxx ,xxxx为 示例名称,比如, 启动Colors示例, 则向手机发送: @demo:Colors . 手机在收到短信后,先检测短信格式是否符合 @demo:xxxx, 若符合,这启动对应的示例。
在AndroidGraphics2DTutorial中添加一个自定义的Broadcast Receiver SmsMessageReceiver 用于监测接受到的短信:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public class SmsMessageReceiver extends BroadcastReceiver {
private static final String queryString= "@demo:" ;
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras == null )
return ;
Object[] pdus = (Object[]) extras.get( "pdus" );
for ( int i = 0 ; i < pdus.length; i++) {
SmsMessage message = SmsMessage.createFromPdu(( byte []) pdus[i]);
String fromAddress = message.getOriginatingAddress();
String fromDisplayName = fromAddress;
String msg=message.getMessageBody();
if (msg.startsWith(queryString)){
Intent di = new Intent();
di.setClass(context, AndroidGraphics2DTutorial. class );
di.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
di.putExtra(AndroidGraphics2DTutorial.SMS_FROM_ADDRESS_EXTRA,
fromAddress);
di.putExtra(AndroidGraphics2DTutorial.SMS_FROM_DISPLAY_NAME_EXTRA,
fromDisplayName);
di.putExtra(AndroidGraphics2DTutorial.SMS_MESSAGE_EXTRA, msg);
context.startActivity(di);
}
}
}
}
|
onReceive 会在Broadcast 事件发生是执行,这里检测短信内容,如果是以@demo:开头的,则启动AndroidGraphics2DTutorial Main Activity。
修改AndroidMainifest.xml
1
2
3
4
5
|
<receiver android:name=".SmsMessageReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
|
同时添加permission ,和Java ME类似Android某些API需要指定对应的Permission才可以使用。
1
2
|
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
修改AndroidGraphics2DTutorial.java 来处理SMS消息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
Resources res = getResources();
String[] activity_Names = res.getStringArray(R.array.activity_name);
String[] activity_Infos = res.getStringArray(R.array.activity_info);
for ( int i= 0 ;i<activity_Names.length;i++){
ActivityInfo activityInfo= new ActivityInfo();
activityInfo.activityName=activity_Names[i];
activityInfo.activityInfo=activity_Infos[i];
activityInfo.iconIndex=R.drawable.icon1+i;
activityInfos.add(activityInfo);
}
aa= new ActivityInfoAdapter( this ,R.layout.activitylist,activityInfos);
setListAdapter(aa);
Bundle bundle=getIntent().getExtras();
if (bundle!= null ){
mFromAddress = bundle.getString(SMS_FROM_ADDRESS_EXTRA);
mMessage = bundle.getString(SMS_MESSAGE_EXTRA);
int index=mMessage.indexOf(queryString);
if (index>= 0 ){
String demoName=mMessage.substring(index+queryString.length());
Intent intent = new Intent();
intent.setClassName( this , packgeName+ ".example." +demoName);
startActivity(intent);
}
}
}
|
下面来测试,如果使用设备,则给手机发送@demo:Colors .
如果使用模拟器,则可以启动两个模拟器:
模拟器左上角数字5554,5556为模拟器的号码。发送@demo:Paths ,则自动触发Paths示例,如果AndroidGraphics2DTutorial没有运行,手机收到SMS短信后,会自动启动应用。
分享到:
相关推荐
Android源代码 包含2个工程: 工程1:Broadcast的Sender,负责发送广播 工程2:Broadcast的Receiver,负责监听广播(2种注册方式:XML和代码动态注册),一旦监听到广播,弹出Activity,并显示广播携带的数据。 本...
NULL 博文链接:https://chaowen0668.iteye.com/blog/1090114
第二十一讲:Broadcast Receiver 使用入门 第二十二讲:AIDL和远程Service调用 第二十三讲:Drawable使用入门 第二十四讲:Android动画入门(一) 第二十五讲:Android动画入门(二) 第二十六讲:Android中...
短信接收器 传入SMS广播接收器-Android示例在此android应用示例中,我们显示了何时广播任何新的SMS事件(当收到新的SMS时)SMS数据。 接收短信到Android广播接收器。 可以从SMS Recibido接收电子邮件。
android-simple-broadcast-receiver-app 简单的Android Broadcast Receiver使用示例
Android新手Broadcast Receiver简单实现 发送广播并实现接收广播
本示例 利用Broadcast Receiver 启动Service,在这里同时又启动了一个Activity用于提示服务启动成功
四大组件 Activity Service content provider broadcast receiver
《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...
利用广播Broadcast Receiver,在2个不同的Activity传递数据
Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及...
Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商...
这是Pro Android学习系列中Broadcast部分的例子源代码。相关学习笔记见:http://blog.csdn.net/flowingflying/article/details/6212512
目 录 出版说明 前言 ...第14章 Broadcast Receiver和Notification 422 第15章 云端应用 449 第16章 Google Map和定位服务 487 第17章 Android通信应用开发 536 本章总结 592 附录 缩略语 参考文献
3 9 2 广播接收器:Broadcast Receiver 3 9 3 服务 Service 3 9 4 内容提供者 Content Provider 第4章 对话框 信息提示和菜单 4 1 对话框 4 2 信息提示 4 2 1 Toast信息框 4 2 2 通知 Notification 4 3 菜单 第5...
Android系统中的广播Broadcast,Receiver例子,可以用LogCat察看整个运行的生命周期.MainActivity界面上有两个按钮,分别是Start Counter和Stop Counter按钮,点击前者开始计数,而点击后者则停止计数。
《Android开发案例驱动教程》部分源码 目 录 出版说明 前言 第1章 Android操作系统概述 1 第2章 Android开发环境搭建 3章 第一个Android程序 19 第4章 Android UI基础 58 第5章 UI基础控件 79 第6章 UI高级控件 105 ...
一个关于Android四大组件Broadcast Receiver的小demo
第八章_Android广播事件处理Broadcast_Receiver 让你更快了解
5 播放课后练习查看答案 相关技术及应用 Android 应用开发实践 第二十一节:Broadcast Receiver和Notification(一) 6 播放课后练习查看答案 相关技术及应用 Android 应用开发实践 第二十二节:Broadcast Receiver...