版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
移动终端应用开发校园易App系统功能实现ANDROID目录Contents获取注册页面信息实现校园易学校网站功能实现校园易班级新消息提示教学目标知识目标掌握AndroidIntent通信机制。掌握Intent显式启动方法。掌握Intent隐式启动方法。理解Bundle在两个Activity中值传递的方法。掌握Broadcast通信机制。技能目标能够在Android中启动新的Activity。能够利用Android打开网页、拨打电话。能够利用Broadcast实现广播式通信。素质目标勇于探索未知领域。培养提出问题和解决问题的能力。获取注册页面信息01PART使用Intent实现跳转Android中的Intent(意图)主要用于实现Android应用中各组件之间的通信,这里所说的组件指Activity、Service及Broadcast。对于不同的组件,Android提供了不同的Intent发送机制。(1)Activity:Intent对象可以作为参数传递给Context.startActivity()方法或Activity.startActivityForResult()方法,用来启动Activity或者让已经存在的Activity去做其他任务。该Intent对象包含要启动的Activity的信息,以及其他必要的数据。(2)Service:Intent对象可以作为参数传递给Context.startService()方法,用来初始化Service或者发送新指令到正在运行的Service。Intent对象还可以作为参数传递给Context.bindService()方法,用来建立调用组件和目标Service之间的连接。该Intent对象包含要启动的Service的信息,以及其他必要的数据。(3)Broadcast:Intent对象可以作为参数传递给Context.sendBroadcast()、Context.sendOrderedBroadcast()或Context.sendStickyBroadcast()等广播方法,使其被发送给所有感兴趣的BroadcastReceiver。使用Intent实现跳转Intent有两种类型,一种是显式Intent,即明确指出了目标组件名称的Intent;另一种是隐式Intent,即没有明确指出目标组件名称的Intent。显式Intent直接用组件的名称定义目标组件,而开发者往往并不清楚其他应用程序的组件名称,因此显式Intent更多地用于在应用程序内部传递消息。例如,在某应用程序内,一个Activity启动一个新的Activity以响应用户的操作,或者启动一个Service以在后台下载文件。隐式Intent恰恰相反,其不使用组件名称定义需要激活的目标组件,因此被广泛地用于在不同应用程序之间传递消息。Android使用IntentFilter来寻找与隐式Intent相关的对象。使用Intent实现跳转在Android中,Activity提供了和用户交互的可视化界面,因此要想实现跳转功能,需要先添加一个新的Activity布局页面,再在Java文件中创建此Activity类并在AndroidManifest.xml文件中进行配置,最后利用Intent对象实现跳转功能。1.创建Activity创建Activity大致可以分为以下两个步骤。(1)继承androidx.appcompat.app包中的AppCompatActivity类,或继承AppCompatActivity的子类。importandroidx.appcompat.app.AppCompatActivity;publicclassSecondActivityextendsAppCompatActivity{}(2)重写需要的回调方法。通常情况下,需要重写Activity的onCreate()方法,并在该方法中调用setContentView()方法来设置要显示的视图。publicclassSecondActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);}}使用Intent实现跳转2.配置Activity创建Activity后,还需要在AndroidManifest.xml文件中配置该Activity,如果没有配置该Activity,而又在程序中启动了该Activity,则系统将抛出图的Activity未注册异常。Activity未注册异常使用Intent实现跳转Activity的配置方法是在<application></application>标签中添加<activity></activity>标签。<activity>标签的基本语法格式如下。<activityandroid:icon="@drawable/图标文件名"android:name="实现类"android:label="说明性文字"android:theme="要应用的主题"…>
…</activity>使用Intent实现跳转主题样式描述android:theme="@android:style/Theme.Dialog"Activity显示为对话框模式android:theme="@android:style/Theme.NoTitleBar"不显示应用程序标题栏android:theme="@android:style/Theme.NoTitleBar.Fullscreen"不显示应用程序标题栏,全屏android:theme="@android:style/Theme.Black"黑色背景android:theme="@android:style/Theme.Black.NoTitleBar"黑色背景,无标题栏android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"黑色背景,无标题栏,全屏android:theme="@android:style/Theme.Light"白色背景android:theme="@android:style/Theme.Light.NoTitleBar"白色背景,无标题栏android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"白色背景,无标题栏,全屏android:theme="@android:style/Theme.Wallpaper"使用系统桌面作为应用程序背景android:theme="@android:style/Theme.Wallpaper.NoTitleBar"使用系统桌面作为应用程序背景,无标题栏android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"使用系统桌面作为应用程序背景,无标题栏,全屏android:theme="@android:style/Theme.Translucent透明背景android:theme="@android:style/Theme.Translucent.NoTitleBar"透明背景,无标题栏android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"透明背景,无标题栏,全屏android:theme="@android:style/Theme.Panel"以面板风格显示android:theme="@android:style/Theme.Light.Panel"以平板风格显示Android自带的主题样式使用Intent实现跳转3.实现跳转功能跳转功能的实现需要用到Intent的显式启动,即在Intent中明确要启动的Activity的类名称。通常,针对一个Android项目中第一个启动的Activity,需要在AndroidManifest.xml文件中进行配置,并通过<intent-filter>标签将其设置为程序入口。<activityandroid:name=".MainActivity"android:exported="true"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>使用Intent实现跳转如果有其他的Activity需要启动,则需要用到Intent和startActivity()方法。(1)创建Intent对象,可以使用以下基本语法格式。其中,第一个参数为当前页面类,第二个参数为下一跳转的页面类。Intentintent=newIntent(ContextpackageContext,Class<?>cls);(2)使用startActivity()方法启动Activity,传入刚创建的Intent对象,其基本语法格式如下。publicvoidstartActivity(Intentintent);使用Intent实现跳转【案例4-1】实现校园易App用户登录成功跳转页面功能。登录成功页面使用Intent实现数据传递在启动Activity时还可以传递数据,可以在Intent对象的putExtra()方法中将要携带的数据信息保存到Intent对象中,还可以利用Bundle对象将数据信息通过键值对(key-value)的方式放入Intent对象中。属性作用Componentname指定处理Intent对象的组件名称ActionIntent要完成的一个动作Category对执行动作的类别进行描述Data向Action提供要操作的数据Extras向Action提供要操作的附加数据Flags提示Android程序如何启动一个ActivityIntent属性及其作用使用Intent实现数据传递Bundle主要用于传递数据,其保存的数据以键值对的形式存在。人们经常使用Bundle在Activity之间传递数据,传递的数据可以是byte、int、long、float、string等基本类型的数据或它们对应的数组,也可以是对象或对象数组。Bundle提供了putXxx()/getXxx()方法,用于写/读基本类型的数据。(1)putXxx(Stringkey,Xxxvalue):写数据。(2)getXxx(Stringkey):读数据,其根据key值获取Bundle中的数据。例如,将数据存放于Bundle对象中,并添加到Intent对象中的写数据方法如下。Bundlebundle=newBundle();bundle.putstring("username","user");bundle.putInt("password",123456);intent.putExtras(bundle);在跳转后的页面中通过Intent读取携带数据的方法如下。Bundlebundle=this.getIntent().getExtras();stringbundleString=bundle.getstring("username");intbundleInt=bundle.getInt("password");实现用户注册功能【案例4-2】实现校园易App用户注册功能。用户注册效果用户注册成功数据传递效果实现校园易学校网站功能02PART使用Intent实现隐式启动Intent隐式启动不会指定特定的组件,而是会声明要执行的常规操作,从而允许其他应用中的组件来进行处理。使用隐式Intent时,Android通过将Intent的内容与在设备上其他应用的清单文件中声明的Intent过滤器进行比较,从而找到要启动的相应组件。如果Intent与Intent过滤器匹配,则Android将启动该组件,并向其传递Intent对象。1.Intent过滤器Intent过滤器是应用清单文件中的一个表达式,用于指定该组件要接收的Intent类型。例如,通过为Activity声明Intent过滤器,可以使其他应用直接使用某一特定类型的Intent启动Activity。同样,如果没有为Activity声明任何Intent过滤器,则Activity只能通过显式Intent启动。<intent-filter>标签的基本语法格式如下。<intent-filterandroid:icon="drawableresource"android:label="stringresource"android:priority="integer">…</intent-filter>使用Intent实现隐式启动2.Intent隐式启动方法Intent隐式启动需要在创建Intent对象时传入两个参数,一个参数是动作(Action),指定要执行的通用操作(查看或选取)的字符串,常用的动作常量如表4-3所示;另一个参数是数据(Data),引用待操作数据或该数据的互联网媒体类型的URI(Uri对象),常用的数据类型如表4-4所示。例如,如果需要在自己的应用程序中展示一个网页,则可以调用系统的浏览器来打开该网页,而不必编写一个浏览器,基本代码如下。Intentintent=newIntent(); //创建Intent对象intent.setAction(Intent.ACTION_VIEW); //为Intent设置动作intent.setData(Uri.parse("")); //为Intent设置数据startActivity(intent); //将Intent传递给Activity使用Intent实现隐式启动动作常量描述ACTION_MAIN作为初始的Activity启动,没有数据输入/输出ACTION_VIEW将数据显示给用户ACTION_ATTACH_DATA指示一些数据应该附属于其他地方ACTION_EDIT将数据显示给用户,供用户编辑ACTION_PICK从数据中选择一项,并返回该项ACTION_CHOOSER显示Activity选择器,允许用户在继续前按需选择ACTION_GET_CONTENT允许用户选择特定类型的数据并将其返回ACTION_DIAL使用提供的数据拨打电话ACTION_CALL使用提供的数据给某人拨打电话ACTION_SEND向某人发送消息,接收者未指定ACTION_SENDTO向某人发送消息,接收者已指定ACTION_ANSWER接听电话ACTION_INSERT在给定容器中插入空白项ACTION_DELETE从容器中删除给定数据ACTION_RUN无条件运行数据ACTION_SYNC执行数据同步ACTION_PICK_ACTIVITY挑选给定Intent的Activity,返回选择的类ACTION_SEARCH执行查询ACTION_WEB_SEARCH执行联机查询ACTION_FACTORY_TEST工厂测试的主入口点常用的动作常量使用Intent实现隐式启动数据类型数据格式示例浏览网页http://网页格式拨打电话tel:电话号码tel送短信smsto:短信接收号码smsto找SD卡文件
file:///sdcard/dirfile:///sdcard/Download/1.jpg显示地图geo:坐标,坐标geo:36.5,-26.7联系人信息content://联系人信息content://com.android.contacts常用的数据类型使用Intent实现隐式启动3.实现校园易App跳转到学校网站功能【案例4-3】实现校园易App跳转到学校网站功能。跳转前页面效果学校网站实现帮助功能【案例4-4】实现校园易App帮助功能。点击按钮可以自动拨打客服电话,还可以给客服发送短信。帮助页面效果拨打电话页面拨打电话页面
发送短信页面实现班级新消息提示功能03PART学习Android广播机制Android发出的广播为系统广播,如通知电量低、拍摄一张照片等。开发者根据程序需要自己定义的广播为用户自定义广播。在Android中可以有任意数量的广播接收器,用于对所有感兴趣的广播进行接收,所有的广播接收器都继承BroadcastReceiver基类。广播接收器没有用户界面,但可以启动一个Activity来响应接收到的消息,或者使用一个NotificationManager来通知用户。1.广播的种类广播按属性分为以下几种。(1)标准广播(NormalBroadcast):完全异步的广播。广播发出后,所有的广播接收器几乎同时接收到这条广播。不同的App可以注册并接收到标准广播。(2)有序广播(OrderedBroadcast):同步的广播。同一时刻只有一个广播接收器能接收到这条广播,该广播接收器处理完这条广播后,广播才会继续传递。(3)本地广播(LocalBroadcast):只在此App内发送和接收的广播。(4)带权限广播:发送广播时可以带上相关权限,只有申请了权限的App或广播接收器才能收到相应的带权限广播。学习Android广播机制2.广播的生命周期广播接收器仅在其执行onReceive()方法时处于活跃状态。当onReceive()方法返回后,广播接收器即处于失活状态。广播的生命周期只有10秒,如果在onReceive()方法内进行超过10秒的操作,则系统会报错。因此,当需要完成一项比较耗时的工作时,应该发送Intent给Service,由Service来完成这项工作。每次广播到来时,系统会重新创建广播接收器对象,并调用onReceive()方法,该方法执行完以后,该对象即被销毁。广播的生命周期。广播生命周期学习Android广播机制3.广播接收器的注册与注销广播接收器用于监听被广播的事件(Intent),为了达到这个目的,广播接收器必须进行注册。广播接收器的注册方法有以下两种。(1)静态注册。静态注册方式是在AndroidManifest.xml的<application>中定义广播接收器并设置要接收的广播的action属性。使用静态注册方式时,该应用程序不管是否处于活跃状态,都会进行监听。静态注册相关代码如下。<receiverandroid:name="MyReceiver
"><intent-filter><actionandroid:name="MyReceiver_Action"/></intent-filter></receiver>
(2)动态注册。动态注册方式会在Activity中调用函数,代码如下。registerReceiver(receiver,filter,broadcastPermission,scheduler);学习Android广播机制4.广播三要素Android广播机制包含三个基本要素:广播(Broadcast),用于发送广播;广播接收器(BroadcastReceiver),用于接收广播;意图(Intent),用于保存广播相关信息的媒介。Broadcast是一种被广泛用于在应用程序之间传输信息的机制,而BroadcastReceiver是对发送出来的Broadcast进行过滤接收并响应的一类组件。5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 我校严格财务制度
- 科技企业财务制度
- 员工手册含财务制度
- 公司办公会议制度
- 养老院老人康复理疗师职业道德制度
- 加高凳子施工方案(3篇)
- 电钢实训室安全管理制度(3篇)
- 校园陶艺策划活动方案(3篇)
- 教育信息化建设与管理制度
- 国际关系学院教学督导组本科生导师制总结会反馈表
- 路灯养护投标方案
- (完整版)医疗器械网络交易服务第三方平台质量管理文件
- 中国高血糖危象诊断与治疗指南
- 人教版三年级语文下册《选读课文8 除三害》优质教学设计教案-9
- 人民医院检验科程序文件
- 在BBO桥牌在线练习桥牌的步骤
- DB21T 3444-2021老玉分级规范
- MT/T 544-1996矿用液压斜轴式轴向柱塞马达试验方法
- GB/T 16927.2-2013高电压试验技术第2部分:测量系统
- 2022年液化气站项目可行性研究报告
- 环境与人类健康环境与人类健康
评论
0/150
提交评论