毕业论文

打赏
当前位置: 毕业论文 > 计算机论文 >

AndroidApp的活动事件图生成(6)

时间:2021-11-13 21:07来源:毕业论文
Intent 是应用程序内不同组件之间通信的载体。当 Android 运行时需要连接不同的组件时, 通常借助于 Intent 来完成。Intent 可以启动应用中另一个 Activity,也

Intent 是应用程序内不同组件之间通信的载体。当 Android 运行时需要连接不同的组件时, 通常借助于 Intent 来完成。Intent 可以启动应用中另一个 Activity,也可以启动一个 Service, 还可以发送一条广播消息来触发系统中的 Broadcast Receiver,它们之间的区别只是使用机制 不同。

Intent 封装了当前组将需要启动或者触发的的目标组件的信息。根据 Intent 是否明确指定 目标组件,Intent 可以分为显示 Intent 与隐式 Intent。前者需要明确指明需要启动或者触发的 组件类名;后者只需指定需要启动或者触发的组件应该满足的条件。

在显示 Intent 中,系统会根据 Intent 包含的信息直接确定需要启动或触发的组件;而在隐 式 Intent 中,通过 Intent 与 Intent-filter 的匹配确定目标组件。Intent 中包含有四个与隐式 Intent 有关的属性:Action、Category、Data、Type。其中 Action 代表 Intent 所要完成的一个抽象“动 作”;Category 用于为 Action 增加额外的附加类别信息;Data 通常用于向 Action 提供操作的 数据;Type 用于指定 Data 所指定 Uri 对应的 MIME 类型。其中,Action、Category 与 Type 的数据类型为 String 类型,Data 的数据类型是 Uri 或 MimeType 类型。Uri 由 scheme、host、 port、path 四部分组成。例如,在一个 Uri 数据 content://nust。test。project:8080/cz/example 中, connect 是 scheme 部分,nust。test。project 是 host 部分,8080 是 port 部分,/cz/example 是 path 部分。MimeType 是多用途互联网邮件扩展类型,用来设置文件的扩展名。例如,“audio/mp3” 表示 mp3 的多媒体文件。常见的 MimeType 类型数据有“audio/*”,“image/*”,“video/*”,“text/*” 等,分别表示多媒体、图片、影音、文本文件格式。

如图 2。1,Activity、Service、Content Provider 组件内会声明 Intent-Filter,一个组件可以 声明 0-1 个 Intent-Filter,一个 Intent-Filter 包含可以 0-N 个 Action、0-N 个 Category、0-1 个 Data。

一个 Intent 会与一个 Intent-Filter 进行匹配,从而确定要启动或触发的组件。根据上文提 到的 Intent 属性,匹配方式可以分为 Action 匹配、Category 匹配和 Data 匹配。前两种较为简 单,由于一个 Intent 对象最多只能包括一个 Action 属性,但可以包含多个 Category 属性,所 以只需 Intent 与 Intent-Filter 中的任意一个 Action 匹配,并且 Intent 中所有的 Category 都包含 在 Intent-Filter 中,即可确定需要启动或触发的组件。

对于 Data 匹配来说,可以继续分成两个部分:Uri 匹配和 MineType 匹配。Uri 匹配:如 果目标组件的<data。。。/>子元素只指定了 android:scheme 属性,那么只要与 Intent 属性的 scheme 部分匹配即可;如果目标组件的<data。。。/>子元素只指定了 android:scheme、android:host 属性, 那么只要与 Intent 属性的 scheme、host 部分匹配即可;如果目标组件的<data。。。/>子元素指定 了 android:scheme、android:host、android:port 属性,那么需要与 Intent 属性的 scheme、host、 port 部分 匹配 ; 如 果目标 组件 的<data。。。/> 子元 素指 定了 android:scheme 、 android:host、 android:path 属性,那么需要与 Intent 属性的 scheme、host、path 部分匹配;如果目标组件的论文网

<data。。。/>子元素指定了全部属性,那么需要与 Intent 所有属性匹配,确定匹配之后,即可确定 目标组件。MineType 匹配:值唯一,直接进行匹配即可。

2。2 相关工作

目前国内外针对 Android 应用程序中 Activity 活动图的研究主要可以分为静态分析与动态 分析,它们的分析都可以通过 soot 代码分析工具进行。 AndroidApp的活动事件图生成(6):http://www.youerw.com/jisuanji/lunwen_84890.html

------分隔线----------------------------
推荐内容