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,并显示广播携带的数据。 本...
这篇博客"Android实例四:BroadCast_Receiver"将深入探讨如何在实际项目中使用BroadcastReceiver。 首先,我们需要了解BroadcastReceiver的基本概念。BroadcastReceiver是一个抽象类,用于接收并处理系统或应用广播...
在Android应用开发过程中,Broadcast Receiver是一种重要的组件,它主要用于接收来自系统或其他应用程序发送的广播消息。通过这种方式,应用可以了解到外部环境的变化,比如网络状态改变、电量变化等,并据此作出...
【Android开发教程】是IT领域中的一个重要分支,尤其对于初学者而言,这是一份非常宝贵的资源。这份"新版Android入门开发教程 完整pdf开发笔记"涵盖了从零开始学习Android应用开发所需的基础知识和实践技能。 ...
《Android 安卓 开发教程》是一本专为Android初学者设计的电子书,虽然出版时间可能较早,但其内容依然对当前的学习者有价值。这本书深入浅出地讲解了Android开发的基础知识,是入门和巩固技能的理想选择。在本文中...
在Android开发中,Broadcast Receiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发送的广播消息,并在接收到这些消息时执行相应的操作。本项目“android-simple-broadcast-receiver-app”提供了一个...
短信接收器 传入SMS广播接收器-Android示例在此android应用示例中,我们显示了何时广播任何新的SMS事件(当收到新的SMS时)SMS数据。 接收短信到Android广播接收器。 可以从SMS Recibido接收电子邮件。
### 四大组件详解:Activity、Service、Content Provider与Broadcast Receiver #### 一、Activity **定义:** Activity是Android应用程序中的四大基本组件之一,它代表一个屏幕界面,用户可以直接与其进行交互。每...
在Android开发中,BroadcastReceiver(广播接收者)和Service是两个关键组件,它们协同工作可以实现许多后台操作。BroadcastReceiver可以监听系统或自定义广播事件,并在接收到广播时执行相应的逻辑。本示例主要讲解...
在Android开发中,四大组件是Activity、Service、Content Provider以及我们这里关注的Broadcast Receiver(广播接收器)。Broadcast Receiver是Android系统中的一个重要组成部分,它允许应用程序在后台接收并响应...
由于提供的文件内容中并未实际包含有关“深入浅出Android软件开发教程”的教学内容,而是重复出现了“墨马图书专营店”这一无关信息,因此无法从中提取知识点。但是,我可以基于这个标题“深入浅出Android软件开发...
本教程将引导Android新手一步步实现Broadcast Receiver。 首先,我们需要创建一个新的BroadcastReceiver类。在Android Studio中,可以在项目结构中选择“New” -> “Java Class”,然后命名为“MyBroadcastReceiver...
《Android系统开发教程》 Android系统开发是一门涵盖了操作系统、软件工程、编程语言等多个领域的综合性技术,对于有志于在移动应用开发领域深造的开发者来说,是必不可少的知识体系。本教程将带领你逐步深入...
### Android的Broadcast Receiver应用机制 #### 一、BroadcastReceiver简介 在Android开发中,四大核心组件包括:Activity、Service、BroadcastReceiver以及Content Provider。其中,BroadcastReceiver是一种特殊...
9. 开发环境:Android开发主要使用Eclipse集成开发环境(IDE),配合Android Development Tools(ADT)插件,此外,还可以使用JDK(Java Development Kit)5或6版,以及Apache Ant构建工具。 开发Android应用程序的...
这份"Android开发教程笔记完全版"涵盖了Android开发的基础到高级主题,旨在帮助开发者全面理解并掌握Android应用的构建过程。 一、Android系统概述 Android是由Google主导的开源操作系统,基于Linux内核。它的开放...
Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及...
在Android应用开发中,BroadcastReceiver是一种非常重要的组件,它允许应用程序在不直接交互的情况下接收和响应系统或自定义广播事件。本教程将深入探讨如何利用BroadcastReceiver在两个不同的Activity之间传递数据...
《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...
7. **Android新手开发教程**:针对初学者,它会介绍Android应用开发的基本流程,例如如何创建一个新的项目,如何编写第一个“Hello, World!”程序,以及如何进行应用的调试。 8. **Android应用程序开发36技**:这...