2011329700130张军伟安卓实验四

上传人:第*** 文档编号:34400845 上传时间:2018-02-24 格式:DOC 页数:8 大小:580KB
返回 下载 相关 举报
2011329700130张军伟安卓实验四_第1页
第1页 / 共8页
2011329700130张军伟安卓实验四_第2页
第2页 / 共8页
2011329700130张军伟安卓实验四_第3页
第3页 / 共8页
2011329700130张军伟安卓实验四_第4页
第4页 / 共8页
2011329700130张军伟安卓实验四_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《2011329700130张军伟安卓实验四》由会员分享,可在线阅读,更多相关《2011329700130张军伟安卓实验四(8页珍藏版)》请在金锄头文库上搜索。

1、实验四 Android 基本组件交互实验【目的】本实验是 Android 基本组件实验,主要针对 Activity、Service 和 Receiver 实现和使用方法。通过实验使学生掌握 Activity 的跳转、Service 的启动停止以及 Receiver 的接受等。【要求】 使得学生熟悉 Activity、Service 和 BroadCast 基本使用; 使得学生掌握短信接收实现和使用; 使得学生掌握界面跳转基本原理和使用方法; 使得学生掌握服务和广播的基本机制。【原理】1. Activity 跳转startActivity跳转到目标页面,参数为 Intent;startActiv

2、ityForResult 跳转到下一个 Activity,而当这个 Activity 被关闭以后,自动跳转前一个 Activity,并调用 onActivityResult( )方法,参数为 Intent 和requestcode2. IntentAndroid 基本的设计理念是鼓励减少组件间的耦合,因此 Android 提供了 Intent (意图) ,Intent 提供了一种通用的消息系统,将要执行的动作的抽象的描述,一般来说是作为参数来使用,由 Intent 来协助完成 Android 各个组件之间的通讯 。Intent 属性: Action ,对执行动作的描述,在 Intent 类中定

3、义了一些字符串常量作为标准动作; data ,是对执行动作所要操作的数据的描述, Android 中采用 URI 来表示数据;例:VIEW_ACTION content:/contacts/1 表示显示标识符为”1的联系人的详细信息。 catagory 类别,是被执行动作的附加信息; extra 附加信息,除了 data 之外,还可以通过 extra 附加信息,extra 属性使用 Bundle 类型进行数据传递; component 组件,显式指定 Intent 的目标组件的名称; type 数据类型,显式指定 Intent 的数据类型;3. Service 组件Service 一般由一个

4、Activity 或其他 Context 对象来启动,当启动 Service 之后,该Service 将会在后台运行,及时启动这个 Service 的 Activity 或其他组件的生命周期已经结束,Service 仍然会继续运行,直到自己的生命周期结束为止。每个 Service 都应该在ndroidManifest.xml 中进行声明。Service 的启动方式有两种,对应的生命周期也各不相同。通过 startService 方法启动。当系统调用 startService 方法,如果该 Service 还未启动,则依法调用其 onCreate 方法和 onStart 方法来启动。当其他 Co

5、ntext 对象调用stopService 方法、Service 调用自身的 stopSelf 或 stopService 方法时才会停止Service 的执行。通过 bindService 方法启动。当系统调用 bindService 方法时,如果该 Service 未启动,则会调用 onCreate 方法完成初始化工作,然后会将该 Service 和 Context 对象(如Activity)进行绑定,当被绑定的 Context 对象被销毁时,与之绑在一起的 Service 也会停止运行。4. Broadcast Receiver 组件Broadcast Receiver 同 Servic

6、e 一样,并不提供与用户交互的表示层,其实是一种负责接收广播消息并对消息作出反应的组件。在 Android 的系统中就存在许多这样的广播,比如电池电量过低或信号过低时,系统就会发出广播进行通知。应用程序如果需要响应某一个广播消息,应该注册对应的 BroadcastReceiver 对象,该对象继承自 BroadcastReceiver 类,该类位于 android.content 包。这样一来当系统或另外的应用程序发出特定广播时,该应用程序就可以接受并做出回应,如启动 Activity 等。接受广播的时候就需要通过 IntentFilter 对象来进行过滤。BroadcastReceiver

7、的生命周期比较简单,其只有一个回调方法-onReceiver,该方法在应用程序接受到发给自己的广播的时候调用,所以 BroadcastReceiver 的使用方法也相对简单,只需要对 onReceive方法进行合理重写,在适当的地方注册该 BroadcastReceiver 即可。注册 BroadcastReceiver 对象的方式有以下两种。在 AndroidMannifest.xml 文件中声明。注册信息包裹在标签中,并在标签内设定过滤规则。在代码中创建并设置 IntentFilter 对象。该 IntentFilter 对象包含了对广播的过滤规则,然后在需要的地方调用 Context.r

8、egisterReceiver 方法和Context.unregisterReceiver 方法进行注册和取消注册,如果采用这种方式注册的话,当Context 对象被销毁时,该 BroadcastReceiver 也就不复存在了。【过程】1 布局文件 2 配置文件1.Aplication2.权限3 Activity1.启动服务Intent intent = new Intent(com.shane.broadcast.SMSService);startService(intent);2.停止服务Intent intent = new Intent(com.shane.broadcast.SMS

9、Service);stopService(intent);4 服务private BCReceiver bcReceiver;String SMS_ACTION = android.provider.Telephony.SMS_RECEIVED;1.创建服务bcReceiver = new BCReceiver();IntentFilter filter = new IntentFilter();filter.addAction(SMS_ACTION);SMSService.this.registerReceiver(bcReceiver,filter);System.out.println(

10、Service create!);5 BroadcastReceiverStringBuilder builder = new StringBuilder();Overridepublic void onReceive(Context context, Intent intent)System.out.println(SMS Received!);Bundle bundle = intent.getExtras();/读取短消息的标签pdusObject myOBJpdus = (Object)bundle.get(pdus);SmsMessage messages = new SmsMess

11、agemyOBJpdus.length;for(int i = 0; imyOBJpdus.length; i+)messagesi = SmsMessage.createFromPdu(byte) myOBJpdusi);builder.append(messagesi.getDisplayMessageBody();System.out.println(builder);Intent smsintent = new Intent(context,BCActivity.class);smsintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);smsin

12、tent.putExtra(SMS, builder.toString();context.startActivity(smsintent);builder.setLength(0);/回传消息String sender = messages0.getOriginatingAddress();System.out.println(sender+);SmsManager manager = SmsManager.getDefault();manager.sendTextMessage(sender, null, Hello World!, null, null);Toast.makeText(c

13、ontext, Message has been sent, 5000).show();/回拨电话Intent intentcall=new Intent(Intent.ACTION_CALL,Uri.parse(tel:+sender);intentcall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(intentcall);【所用仪器、材料】安装 Android 开发环境的 PC 机一台【实验内容】1. 接收短信、开启和停止服务的界面布局;2. 实现短信接收服务;3. 接收广播信息。【完成实验报告】感觉好高端,给本地手机发送接收不到。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号