版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE19目录TOC\o"1-3"\u第一章引言 11.1Android系统背景介绍 11.2国内外研究现状 11.2.1国内外手机系统现状 11.2.2国内外手机应用现状 3第二章Android系统基本介绍 52.1Android简介 52.2Android结构 62.3Android应用程序结构解析 72.3.1Android的API 72.3.2Android应用程序结构剖析 9第三章开发环境的搭建 133.1jdk的安装及配置 133.2Eclipse安装 133.3AndroidSDK安装 133.4使用Ec1ipse下载ADT(Android开发插件) 143.5使用Ec1ipse开发Android应用 15第四章个性化手机防火墙的概要设计 164.1黑名单电话和短信过滤功能的实现 164.1.1黑名单选择模式 164.1.2两种方式添加黑名单 174.2基于关键字的短信过滤功能的实现 174.3隐私空间的实现 184.4数据库设计 184.4.1Android数据库存储简介 184.4.2数据库设计概述 194.4.3数据库详细设计 20第五章个性化手机防火墙的详细设计 235.1基于黑名单电话和短信过滤功能设计 235.1.1设计思路 235.1.2关键代码及解释 235.2两种添加名单功能的设计 265.3基于关键字的短信过滤功能的设计 295.4隐私空间的设计 295.5项目文件夹设计 295.5.1项目文件夹设计 295.5.2项目包和类说明 31第六章防火墙的运行及性能测试 326.1系统运行测试 326.2黑名单管理模块测试 336.2.1两种方式添加名单测试 336.2.2测试结果和分析 346.3基于黑名单的拦截测试 346.3.1基于黑名单的电话和短信拦截测试 346.3.2测试结果和分析 35结果分析及展望 37致谢 38参考文献 39基于Android系统的个性化防火墙设计与实现赵彪,数学计算机科学学院摘要:随着当今信息化的社会快速发展,智能手机已成为人们生活中不可缺少的一部分。然而在商务体系极其发达的时代,一方面广告以各样的形式渗入人们的生活,手机自然也成为其中一种主要的传播通道;另一方面,人们的生活变得繁忙,没有闲暇时间去处理这些扰人的信息,更希望手机本身能够提供这方面的服务,尽可能地减少这些不必要的”骚扰”。因此,手机来电防火墙及短信过滤软件应运而生。本文对当前手机操作系统、来电防火墙软件的发展现状做了简单的介绍,进而详细地分析了Android的特征、架构以及Android应用的构成和工作机制,并对Android与其他操作系统进行了比较,说明了Android系统在手机操作系统中的优势。关键字:Android;智能手机;防火墙;个性化DesignandimplementationofpersonalfirewallbasedonAndroidsystemBiaoZhao,SchoolofMathematicsAbstract:Withtherapiddevelopmentofinformationsociety,intelligentmobilephonehasbecomeanindispensablepartoflife.However,inextremelydevelopederaofthebusinesssystem,ontheonehand,advertisementpermeatesintopeople'slivesbyvariousforms,mobilephonehasbecomeoneofthemajorcommunicationstyle;ontheotherhand,people'slifeturnsbusy,havingnotimetodealwiththesedisturbinginformation,peoplehopethatthemobilephoneitselfcanprovidethisservice,asmuchaspossibletoreducetheunnecessary“harassment”.Therefore,mobilephonecallsandSMSsoftwareemergeasthetimesrequire.Thestatusofthemobilephoneoperatingsystem,incomingcallfirewallsoftwarethispaperisbrieflyintroduced,anddetailedanalysisofthecharacteristicsofAndroid,architecture,Androidapplicationstructureandworkingmechanism.ThispaperstatestheadvantageoftheAndroidsysteminthemobilephoneoperatingsystemsbycomparedwithothers.KeyWords:Android;Smartphone;Firewall;Personal第一章引言1.1Android系统背景介绍随着移动设备的快速普及以及移动设备硬件的提升,移动设备功能越来越完善。移动设备的系统平台也逐渐火热起来。3G时代的到来也是助推移动设备的火热发展的一个大因素。目前国内最常见的移动开发平台有Symbian,iPhone,WindowsPhone以及当下正在逐步兴起的Android。目前为止国内已经有很多Android系统用户。Android是基于Linux内核的软件平台和操作系统。早期由Google开发,后由OpenHandsetAlliance开发。它采用了软件堆层(Softwarestack,又名以软件叠层)的架构,主要分为三部分。底层以Linux核心工作为基础,提供操作系统(OS)功能;中间为框架层及Android运行时环境,上层为应用层,主要是由Java语言写的应用程序。1.2国内外研究现状1.2.1国内外手机系统现状目前国外各软硬件厂商已经推出过多款手机操作系统。下面简单介绍一下现在的主流手机操作系统。IOS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone、iPodtouch以及iPad使用。就像其基于的MacOSX操作系统一样,它也是以Darwin为基础的。IOS的系统架构分为四个层次:核心操作系统层(theCoreOSlayer),核心服务层(theCoreServiceslayer),媒体层(theMedialayer),可轻触层(theCocoaTouchlayer)。目前最新的IOS版本是5.0。它的用户体验是最好的,但它不是开源的,使用IOS的成本比较高。WindowsPhone是微软发布的一款手机操作系统,它将微软旗下的XboxLive游戏、Zune音乐与独特的视频体验整合至手机中。2010年10月11日晚上9点30分,微软公司正式发布了智能手机操作系统WindowsPhone,同时将谷歌的Android和苹果的IOS列为主要竞争对手。搭载WindowsPhone的智能手机正在进军智能手机市场。2011年2月,诺基亚与微软达成全球战略同盟并深度合作共同研发。2012年3月21日,WindowsPhone7.5登陆中国,这也是第一个正式登陆中国的WindowsPhone系统。WindowsPhone8将采用和Windows8相同的内核。WindowsMobile系列操作系统是从微软计算机的Windows操作系统演化而来的。WindowsMobile系列操作系统功能强大,而且支持该操作系统的智能手机大多数都采用了英特尔嵌入式处理器,主频比较高,在其它硬件配置(如内存、储存卡容量等)上也比采用其它操作系统的智能手机要高出许多,因此性能比较强劲,速度比较快。WM的应用软件以MicrosoftWin32API为基础。但是,2010年10月,微软宣布终止对WM的所有技术支持。PalmOS属于Palm公司开发,是一种32位的嵌入式操作系统,是一套专门为掌上电脑编写的操作系统,是一种轻量级、比较开放的操作系统,占用的内存非常小。现在多用于Palm公司生产的手机上。该系统允许用户在其基础上编写和修改相关软件,使支持的应用程序更加丰富多彩。但Palm系统与其他手机系统相比在其它方面也还存在一些不足,如Palm操作系统本身不具有录音、MP3播放功能等,但是可以通过加入第三方软件或硬件设备来实现。其最新的版本为PalmOS5.2。目前国内还没有自主研发并商品化的手机操作系统。当然,近些年来国内企业和我国政府在这方面也投入了大量的人力和物力,同时也取得了一定成果。像小米公司的MIUI系统、百度的百度易系统,还有联想的乐Phone系统,它们是基于Android的二次开发版本,对界面进行修改、添加了新的功能,更适合中国手机用户的需求。1.2.2国内外手机应用现状目前国内外手机应用服务方向主要有基于地理位置的信息服务(LocationBasedServiceLBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网,使用基站来定位)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(GeographicInformationSystem,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。例如手机定位,导航服务。在Android中使用这些服务是件很轻松的事。近年来十分热门的网络社交服务(SocialNetworkingServices)也已进入到手机客户端领域。国外最大的社交Facebook也已经推出手机客户端产品。Twiter,Myspace等国外知名社交类网站都已经推出手机版。但这几种客户端在国内需要翻墙才能访问。国内淘宝网旗下口碑网在也已经推出针对多个手机平台的客户端程序。MSN,QQ,微博等即时通信类的应用也已经在各个主流手机平台推出。手机办公类软件在手机上也正日趋完善,在手机上编辑查看各类文档已经实现,在android平台上的QuickOffice就是这样的软件。手机娱乐游戏类应用,作为传统类手机应用,在各个平台上发展已近相对完善,手机越来越完美的支持各种流媒体的播放,各类传统PC游戏厂商也进入了手机领域。目前智能手机已经成为生活中必备的工具,同时它也具有这样的能力,已经拥有简单PC的性能。
第二章Android系统基本介绍2.1Android简介(l)应用程序架构:在应用程序架构内已经具备多种不同的基础组件,在开发应用程序时,就可以直接调用这些组件,可以节省开发应用程序的心力及时间[2]。这是Android平台的优势所在,因为Android是开源的,我们可以看到这些组件是如何实现的。(2)Dalvik虚拟机器:在Android平台上所使用虚拟机,不是Sun公司的标准Java虚拟机,而是使用Google自主开发的代号为Dalvik的虚拟机,它在保证API方面的兼容的同时,针对移动手机进行了大幅优化,占用资源更小,运行效率更高。(3)集成的浏览器:集成的浏览器是Android内建的浏览器,是以WebKit的浏览引擎为基础所开发成的。WedKit是一个开源浏览器网页排版引擎,目前使用WebKit引擎的浏览器主要有:Safari,Midori,Epiphany等。(4)优化的绘图能力:在程序里可以用到的绘图功能分为2D与3D两个方面。在2D方面,Android提供了一套特有的类库(SGL);而在3D方面则是使用OpenGL/ES(openGLforEmbeddedsystems)规范的类库。(5)SQLite数据库:SQLite提供结构化的数据存取。SQLite是一款轻型的关系数据库,它的设计目标是嵌入式的,目前已经在很多嵌入式产品中使用了它,它占用的资源非常低。SQLite也是一套开放性的关联式资料库,其特点在于轻量性方面的设计结构,更适合在手机上使用。2.2Android结构Android结构是Linux内核、C/C++函数库、Dalvik虚拟机、应用程序框架以及应用程序构成的。图2-1Android系统组件结构图主要的类:android.app:提供高层的程序模型、提供基本的运行环境android.content包含各种的对设备上的数据进行访问和发布的类android.database:通过内容提供者浏览和操作数据库android.graphics:底层的图形库android.media:提供一些类管理多种音频、视频的媒体接口:提供帮助网络访问的类,超过通常的.*接口android.os:提供了系统服务、消息传输、IPC机制vider:提供类访问Android的内容提供者android.view:提供基础的用户界面接口框架android.util:涉及工具性的方法,例如时间日期的操作android.webkit:默认浏览器操作接口android.widget:包含各种UI元素(大部分是可见的)在应用程序的屏幕中使用2.3Android应用程序结构解析2.3.1Android的APIAndroidAPI主要包含了以下几个部分:(1)AndroidManifest.xml:AndroidManifest.xml是系统的控制文件,它告诉系统如何处理所创建的所有应用组件(尤其是活动(Activity),服务(Service),意图接收器(IntentReceiver)和内容提供者(ContentProvider))。举例来说,控制文件就是把活动和要接收的意图(Intent)连接在一起的”胶水”。(2)活动:活动就是一个有生命周期的对象。一个活动就是完成某些工作的代码块,这部分工作还可能包括对用户UI界面的显示。不过这不是必须的,有些活动从不显示UI界面。(3)视图:视图可以将其自身绘制到屏幕上。Android的用户界面由一系列的视图树构成。接口都是由一组以树的形式出现的视图组成的。开发者可以通过创建一个新的视图的方法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不常用的用户图形窗口界面)。(4)意图:意图是一个简单的消息对象,它表示程序想做某事的”意图”。比如应用程序想要显示一个网页,那么它可以通过创建一个Intent实例并将其传递给系统来表示意图浏览这个URI。系统将定位到能处理这一Intent的代码(在当前情况下就是浏览器),并运行之。意图也可以用于广播系统范围内的有效事件(例如通知事件)。(5)服务:服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序的进程里,这取决于自身的需要。其它的组件可以绑定到一个服务上来,通过远程过程调用(RPC)来调用这个方法。例如媒体播放器的服务,当用户退出媒体选择的界面时,仍然希望音乐依然可以继续播放,这时就可用服务来保证当用户界面关闭时音乐还继续播放着。(6)通知:通知将以小图标的形式呈现在状态栏里,用户通过与图标的交互来接收消息。最常见的通知包括短信息、通话记录和语音邮件,但是应用程序也可以创建它们自己的通知事件。2.3.2Android应用程序结构剖析通常由以下四个组件来构建一个完整的Android应用程序。①活动②意图接收器③内容提供者④服务当然,并不是所有的Android应用程序都得具备上述的四个组件,可以由上面的一个或几个来组建。当决定使用以上哪些组件来构建Android应用程序时,需要将它们注册在AndroidManifest.xml文件中,这是一个XML配置文件,在这个文件中可以声明应用程序组件以及它们的特性和要求。这个配置文件是每个Android应用程序所必需的。1.活动活动是上述的四个组件中最常用的一个。每个活动都是Activity的子类,并实现一些独有的功能,如管理UI显示和UI的反馈事件。一个活动就相当于应用程序的一个用户界面,由事件响应以及视图等组成。大多数的应用程序通常包括多个界面。例如:一个文本聊天应用程序,至少应该包含一个联系人列表界面、一个聊天界面、一个设置界面、一个聊天记录查询界面等等。每个界面其实都可看作是一个活动。显示一个新界面就相当于生成一个对应的活动对象。在一些情况下,活动能够返回给它的上级界面一个返回值,例如一个提供给用户选择照片的活动可以返回给它的调用者用户选择了哪个照片文件。2.意图接收器当想要编写代码来对外部事件做一些处理时,可以使用意图接收器。意图接收器并不显示UI界面,它是通过NotificationManager来通知用户他们感兴趣的事件发生了。意图接收器同样可以被注册在AndroidManifest.xml文件中,同时也可以在代码中使用Context.registerReceiver()来注册自己的意图接收器。当一个意图接收器被触发时,系统会根据需要来启动应用程序。3.服务服务是具有长生命周期并且没有用户界面的代码,它在后台运行。不仅可以使用本地服务,还能使用远程服务。4.内容提供者在Android中,每个应用程序都是有自己的userID及在自己的进程中执行。这样做的好处是,可以保护系统及应用程序,避免被其他不正常的应用程序所影响。可以把每个进程想象成是一个黑盒子,彼此不会互相影响,连内存的资料都无法共享。如果应用程序之间想要共享数据,就需要使用内容提供者。一个内容提供者就是一个类,它实现了一个标准的方法集合。其他的应用程序可以使用这些方法来保存和检索此内容提供者处理过的数据。5.Intent的详细解析一个Android应用程序主要由四种组件组成,这四种组件可参考上一节的内容。而这四种组件是独立的,它们之间可以互相调用,协调工作,最终组成一个真正的Android应用。这些组件之间的通讯只要由意图协助完成。意图负责对应用中一次操作的动作、动作对应的数据、附加数据进行描述,Android则根据此意图的描述,负责找到相应的组件,将意图传递给它,并完成组件的调用。因此,意图在这里起着一个媒体中介的作用,专门提供组件之间互相调用的相关信息,实现调用者与被调用者之间的交互。6.Android活动的生命周期Android应用程序的生命周期是由Android框架进行管理,而不是由应用程序直接控制。通常,每一个应用程序(入口一般会是一个活动的onCreate方法),都会占据一个进程。当系统内存即将不足的时候,会依照优先级自动进行进程的回收。不管是使用者或开发者,都无法确定应用程序何时会被回收。关于进程的生命周期将在下一节中介绍,本节主要介绍活动的生命周期。一个活动类别除了onCreate方法之外,还预先定义了onPause(暂停)、onResume(继续)等的基本方法,当从一个活动切换到另一个活动的时候,原来的活动将经过一连串的状态改变。开发者可以在程序中添加一些各状态相对应的流程,每次活动状态改变时,就会执行相对应的流程。要让用户有好的使用体验,活动需要在各个周期中负责保管状态、恢复状态、传送资料等工作。7.活动的运作过程(l)一般启动启动一个活动的基本流程为onCreate一>onStart一>onResume。该流程首先分配资源给这个活动(创建状态),然后将活动的内容显示到屏幕上(启动状态);在一切就绪后,取得屏幕的控制权(恢复状态),用户可以开始使用这个程序。(2)调用另一个活动调用另一个活动的基本流程为onPause(l)一>onCreate(2)一>onStart(2)一>onResume(2)一>onStop(l)。该流程首先冻结原来的活动,再交出屏幕控制权;直到活动2完成一般启动流程后,活动1才会被停止。(3)回到原来活动回到原来活动的基本流程为onPause(2)一>onRestart(1)一>onStart(l)一>onResume(1)一>onStop(2)一>onDestroy(2)。另外按返回键也可以回到原来的活动。(4)退出结束退出结束的基本流程为onPause一>onStop一>onDestroy。如果程序中有直接调用finish方法来关闭活动的话,系统会跳过先冻结的阶段,直接暂停,停止,然后销毁。(5)回收后再启动回收后再启动的基本流程为onCreate一>onStart一>onResume。如果被回收掉的活动一旦又重新被调用时,会像一般启动一样再次调用活动的onCreate方法。
第三章开发环境的搭建开发环境配置:JDK+Eclipse+AndroidSDK+ADT3.1jdk的安装及配置去相应网站下载JDK,接下来的工作就是安装提示一步一步走。设置环境变量步骤如下:我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量。安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java?version查看JDK的版本信息。出现类似下面的画面表示安装成功了:图3-1验证JDK安装是否成功3.2Eclipse安装去网址为http:///downloads/下载Eclipse,解压即可运行。3.3AndroidSDK安装在AndroidDevelopers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。运行SDKSetup.exe,点击AvailablePackages。如果没有出现可安装的包,请点击Settings,选中Misc中的”Forcehttps://...”这项,再点击AvailablePackages。选择希望安装的SDK及其文档或者其它包,点击InstallationSelected、AcceptAll、InstallAccepted,开始下载安装所选包。CMD运行android-h如果有类似以下的输出,表明安装成功。图3-2验证AndroidSDK是否安装成功3.4使用Ec1ipse下载ADT(Android开发插件)(1)启动Eclipse,选择Help>InstallNewSoftware>Add(2)在编辑框中输入插件名字,输入更新插件的地址:https:///android/eclipse/,点击OK。(3)看到一个更新的列表,点击Finish。(4)在返回的对话框中选择Androidplugin>EclipseIntegration>AndroiddevelopmentTools并且点击Next。(5)选择Accepttermsofthelicenseagreement,点击Next。(6)点击Finish。(7)选择InstallAll。(8)重新启动Eclipse。(9)重启后设置Android属性中的AndroidSDK目录(不包括SDK下的Tools): ①选择Window>Preferences…打开编辑属性窗口。 ②选择Android属性面板。 ③点击Browse…,选择加入AndroidSDK的目录。 ④选择Apply,最后点击OK。3.5使用Ec1ipse开发Android应用使用EclipseIDE开发一个Android应用。首先是创建一个Android工程,然后设置应用启动配置。然后可以编辑代码,启动,调试应用。
第四章个性化手机防火墙的概要设计4.1黑名单电话和短信过滤功能的实现4.1.1黑名单选择模式黑名单的有三种拦截模式:只拦截电话,只拦截短信,两者都拦截。在黑名单表中有姓名、电话、拦截模式等字段。实现原理:软件启动后有一个服务(service)在后台运行,在服务中注册有一个监听器,监听电话的状态,当有电话来时,状态会变成响铃状态,在这里可以取得来电的号码。这时遍历表中的黑名单,看是否有号码和来电号码匹配,如果匹配就是该拦截的号码,这里就把电话结束掉,并写入拦截表中,弹出通知告知有电话被拦截。短信的拦截和电话拦截不一样,有两种实现方法:(1)接收系统短信广播:当收到短信时,Android系统会发出一个广播,通知收到短信,拦截短信基于Android中的广播机制。Android中的广播机制是所有注册了该广播监听器的程序都收到广播(只要先收到广播的应用程序没有结束掉该广播),当收到广播就会触发收到广播的事件,可以在这里处理短信,本程序采用这种方法。优点:可以拦截来信在状态栏的显示通知,适合短信拦截。缺点:可以发展成MU,在后台悄悄的收/发短信(2)应用观察者模式,监听短信数据库,操作短信内容:当系统收到短信时,会将短信写入短信数据库,可以注册一个监听器来监听短信数据库的变化。当短信数据库变化时就触发这个事件,在这里可以处理短信。优点:操作方便,适合简单的短信应用。缺点:来信会在状态栏显示通知信息。4.1.2两种方式添加黑名单添加黑名单主要依赖Android中的内容提供者(ContentProvider)和内容访问者(ContentResolver)机制:在Android中的程序与程序之间数据都是私有的,即在程序A中创建的数据库或者文件只能由A自身使用,其他程序无法直接使用A中创建的数据库信息和文件信息,这样保证了程序与程序之间的独立性和数据安全。那么我们如何能够更好的使得不同程序之间数据的独立,而又可以在需要共享数据的时候能够有共同操作数据的桥梁呢?为了解决这个问题,Android设计了一种称为内容提供器的技术,从而为内容共享提供了支持,这就是Android的重要组件ContentProvider。通过ContentProvider我们可以轻松访问其它应用程序提供出来的数据访问接口。当然我们也可以写自己的ContentProvider,提供数据给其它应用程序访问,实现ContentProvider中的方法就可,在这里主要是使用了系统的ContentProvider。(1)系统联系人:可直接从系统联系人中添加名单到黑名单,利用上面提到的系统提供的ContentProvider来访问联系人数据库,查询所有联系人的名字和号码信息。可批量添加到黑名单数据库。(2)手动输入:当然,我们可以手动输入要添加的号码和名字。4.2基于关键字的短信过滤功能的实现实现原理:注册广播接收器,监听系统短信广播,操作短信内容:当系统收到短信时,会向系统发送广播,可以注册一个监听器来接收系统的短信广播。在这里可以查看短信中包括的内容是否有我们的关键字,如果有就拦截该短信;如果没有就不做处理。关键字有系统自带关键字和手动添加关键字。4.3隐私空间的实现现在的手机中有许多个人信息是不希望别人看到的,特别是一些电话和短信,隐私空间的出现满足了这样的需求。让你的隐私真正的来无影,去无踪。实现原理:当有来电和短信时,判断是否是隐私号码的来电或短信,如果不是,什么也不做;如果是,就从通话记录删除该电话,存入隐私数据库中;如果是短信,就从收信箱删除该短信,存入隐私数据库中。进入隐私空间是需要密码的。4.4数据库设计4.4.1Android数据库存储简介(1)SharedPreferences存储数据;(2)文件存储数据;(3)SQLite数据库存储数据;(4)ContentProvider存储数据;(5)网络存储数据;Android数据存储流程图如图5-1:图5-1Android数据存储流程图4.4.2数据库设计概述在Android平台下,使用了一个轻型的数据库——SQLite。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能满足我们对数据库的大部分需求,在本系统中也采用SQLite来存储主要的数据。4.4.3数据库详细设计在本系统中共使用了4张表,它们分别是:短信黑名单表(message_forbid_table),短信垃圾箱表(message_rubbish_table),来电黑名单表(call_forbid_table),来电拦截记录表(call_record_table)。1.短信黑名单表(message_forbid_table)_id:主键,自增长message_forbid_phone:短信黑名单号码2.短信垃圾箱表(message_rubbish_table)_id:主键,自增长message_rubbish_phone:垃圾短信号码message_rubbish_time:收件时间message_rubbish_conten:短信内容3.来电黑名单表(call_forbid_table)_id:主键,自增长call_forbid_phone:黑名单号码4.来电拦截记录表(call_record_table)id:主键,自增长call_record_phone:黑名单号码call_record_time:来电时间call_record_area:来电归属地4.4.4数据库源码(打开和创建类DbAdapter.Java)//4个表:短信黑名单表,短信垃圾箱表,来电黑名单表,来电拦截记录表publicstaticfinalStringMESSAGE_FORBID_TABLE_NAME=“message_forbid_tablepublicstaticfinalStringMESSAGE_RUBBISH_TABLE_NAME=“message_rubbish_table”;publicfinalstaticStringCALL_FORBID_TABLE_NAME=“call_forbid_table”;publicfinalstaticStringCALL_RECORD_TABLE_NAME=“call_record_table”;//公用id字段publicstaticfinalStringTABLE_ID=“_id”;//短信黑名单表字段:来电号码publicfinalstaticStringMESSAGE_FORBID_PHONE=“message_forbid_phone”;//短信垃圾箱表字段:垃圾短信号码,收件时间,短信内容publicstaticfinalStringMESSAGE_RUBBISH_PHONE=“message_rubbish_phone”;publicstaticfinalStringMESSAGE_RUBBISH_TIME=“message_rubbish_time”;publicfinalstaticStringMESSAGE_RUBBISH_CONTENT=“message_rubbish_content”;//来电黑名单表字段:黑名单号码publicstaticfinalStringCALL_FORBID_PHONE=“call_forbid_phone”;//来电拦截记录表字段:黑名单号码,来电时间,来电归属地publicstaticfinalStringCALL_RECORD_PHONE=“call_record_phone”;publicstaticfinalStringCALL_RECORD_TIME=“call_record_time”;publicstaticfinalStringCALL_RECORD_AREA=“call_record_area”;
第五章个性化手机防火墙的详细设计5.1基于黑名单电话和短信过滤功能设计5.1.1设计思路当有来电时我们可以取出来电号码,并把这个号码交给我们的来电处理类BroadCastTool,在这个类里面从数据库中取出数据对比这个号码符合我们的什么操作。主要是基于一张黑名单表,在这张表里有来电号码,姓名,名单类型等。首先判断拦截模式,然后判断是否在名单中,最后判断号码类型。判断出结果后来决定是否拦截这个电话或这条短信。如图5-1:图5-1基于黑名单的过滤流程图5.1.2关键代码及解释在本程序中注册了一个电话监听器和一个短信广播接收器。电话监听器时刻监听Android电话服务程序,电话有三种状态:空闲,响铃和摘机。平时电话处于空闲状态,当有电话进来时就进入响铃状态,在这里能得到来电号码,这时我们把来电号码交给电话处理类BroadCastTool来处理。并要在AndroidManifest.xml中加入相应的权限:<uses-permissionandroid:name=“android.permission.RECEIVE_SMS”></uses-permission><uses-permissionandroid:name=“android.permission.RECEIVE_BOOT_CPMPLETED”></uses-permission><uses-permissionandroid:name=“android.permission.INTERNET”></uses-permission><uses-permissionandroid:name=“android.permission.CALL_PHONE”/><uses-permissionandroid:name=“android.permission.READ_PHONE_STATE”/><uses-permissionandroid:name=“android.permission.READ_CONTACTS”></uses-permission><uses-permissionandroid:name=“android.permission.WRITE_CONTACTS”/><uses-permissionandroid:name=“android.permission.READ_SMS”></uses-permission><uses-permissionandroid:name=“android.permission.WRITE_SMS”></uses-permission><uses-permissionandroid:name=“android.permission.SEND_SMS”></uses-permission>下面是监听电话服务的代码://监听来电if(intent.getAction().equals(“ent.action.PHONE_STATE”)){ Log.d(“call”,“getaction”);telephonyMgr=(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); MyPhoneStateListenermMPSL=newMyPhoneStateListener(context); telephonyMgr.listen(mMPSL,MyPhoneStateListener.LISTEN_CALL_STATE);//利用反射获取隐藏的endcall方法 try{ MethodgetITelephonyMethod=TelephonyManager.class.getDeclaredMethod(“getITelephony”,(Class[])null); getITelephonyMethod.setAccessible(true); iTelephony=(ITelephony)getITelephonyMethod.invoke(telephonyMgr,(Object[])null); }catch(Exceptione){ e.printStackTrace(); }}还有一个广播接收器程序,它负责监听短信广播。当有短信进来时,Android系统会向整个系统发送一个广播,所有注册了该广播接收器的程序都能接收到这个广播,但是广播的发送是有顺序的,从优先级别高的到优先级别低的。在本程序中把收听广播的优先级别设置为20,它会先收到短信广播。并要在AndroidManifest.xml
加入相应的应用,让系统进行监听广播:<receiverandroid:name=“com.ldci.t56.mobile.tool.BroadCastTool”><intent-filterandroid:priority=“20”><!--设置该广播接收类的优先级为20,跟主页面的优先级差不多--><actionandroid:name=“vider.Telephony.SMS_RECEIVED”/><actionandroid:name=“ent.action.BOOT_COMPLETED”/><actionandroid:name=“ent.action.PHONE_STATE”/> <actionandroid:name=“com.ldci.android.t56.mobile.safe.AUTO_START”/></intent-filter></receiver>下面是接收系统短信广播的代码:publicvoidonReceive(Contextcontext,Intentintent){ //监听短信广播,实现拦截垃圾短信 if(intent.getAction().equals(SMS_SYSTEM_ACTION)){/*取出短信的号码和内容(基于黑名单过滤时是需要号码)交给短信处理类,并根据处理结果来决定是否拦截短信(终止广播的继续)*/}}5.2两种添加名单功能的设计实现原理:本系统提供了两种添加黑名单到名单表(list)的方式,它们是:联系人和手动输入。前一种添加方式使用Android中的内容提供者(ContentProvider)机制来获得需要的数据。在Android中,各个程序运行在自己的进程中,数据在内存中也不能共享,除非实现了ContentProvider提供数据给其它程序访问。系统联系人,通话记录,短信记录都实现了ContentProvider,提供了一些接口供我们访问以取得需要的数据,通过图5-2可以看出,程序不是直接访问数据,而是通过ContentProvider去访问数据,然后添加到来电/短信黑名单表中。图5-2ContentProvider原理图关键代码:privatevoidaddForbidPhone(){ LayoutInflatermLI=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); RelativeLayoutmRL=(RelativeLayout)mLI.inflate(R.layout.message_forbid_add,null); mForbidPhone=(EditText)mRL.findViewById(R.id.new_forbid_phone); ButtonmButton=(Button)mRL.findViewById(R.id.get_system_contact); mButton.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ showMulitAlertDialog(); } }); newAlertDialog.Builder(CallActivity.this).setTitle(“添加黑名单”).setView(mRL) .setPositiveButton(“确定”,newOnClickListener(){ publicvoidonClick(DialogInterfacearg0,intarg1){ StringmNewForbidPhone=mForbidPhone.getText().toString(); if(mNewForbidPhone.length()<3){ Toast.makeText(CallActivity.this,“输入错误!”,Toast.LENGTH_SHORT).show(); }else{ StringmStr[]=mNewForbidPhone.split(“;”); for(inti=0;i!=mStr.length;i++){ Stringphone=mStr[i].split(“:”).length==1?mStr[i].split(“:”)[0]:mStr[i].split(“:”)[1]; if(!(mDbAdapter.getPhone(phone,4)).moveToFirst()){ Call_Forbid_InfomCFI=newCall_Forbid_Info(); mCFI.setCall_forbid_phone(phone); mDbAdapter.getAdd(mCFI); }else{ Toast.makeText(CallActivity.this,“号码”+phone+”已存在!”,Toast.LENGTH_SHORT).show(); } } initTab2Data(); Toast.makeText(CallActivity.this,“添加成功!”,Toast.LENGTH_SHORT).show(); } } }).setNegativeButton(“取消”,null).show();}5.3基于关键字的短信过滤功能的设计设计思路:前面已经提到,我们可以在广播中取到短信的内容,利用java.lang.String类的contains(key)方法可以判别短信内容是否有key这个关键字,如果包涵,就判别这条短信是我们该拦截的垃圾短信。在数据库中可以设计一张关键字表,当收到短信后去遍历这张表中的关键字,就可以判别短信内容是否有key这个关键字。5.4隐私空间的设计设计思路:此隐私空间主要是针对来电和短信,真正做到”来无影,去无踪”。当有隐私来电时就直接挂断,隐私号码的短信也直接从系统删除,写入隐私数据库,进入隐私空间查看来电和短信是需要密码的,这个密码只有机主拥有控制权。此隐私空间的实现过程和黑名单的实现过程类似,只是在list表中有一个字段标识了它是否是隐私号码,隐私号码可以在设置中添加和修改。5.5项目文件夹设计5.5.1项目文件夹设计(1).文件夹说明:使用eclipse的ADT插件来开发Android应用程序,eclipse会自动生成一些文件夹和目录来帮我们管理整个项目,包括图片存放位置,布局文件存放位置,字符串存放位置,资产存放位置等。采用这样的方式来有利于设计和管理整个项目,特别是开发比较大的项目的时候,优势就更能体现出来。下面对常用文件夹进行说:/src:源码文件夹,java包和java类放在该目录下/gen:ADT帮我们生成的辅助类存放目录/assets:原始资产文件目录(生成apk文件时不编译该目录)/bin:编译好的apk文件存放在该目录下/res:资源目录,图片文件和字符串等/res/drawable:图片文件存放目录/res/layout:布局文件存放目录/res/raw:原始资源目录,也不会被编译,可存放mp3,mp4等/res/values:保存字符串、颜色、尺寸、类型、主题等资源,可以是任意文件名。对于字符串、颜色、尺寸等信息采用Key-value形式表示,对于类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力电子变换系统的能效优化机制与拓扑创新研究
- 工业废水处理工职业技能鉴定章节题库及答案
- 2026年医疗器械培训试卷(含答案)
- 2026年职业卫生知识培训考试试题(带答案)
- 2026年职业健康培训考试试题库及答案
- 滨海新区2025天津市滨海新区新河街道所属事业单位招聘3人笔试历年参考题库典型考点附带答案详解
- 湛江市2025广东湛江市发展和改革局招聘合同制工作人员14人笔试历年参考题库典型考点附带答案详解
- 2026长春光机所春季招聘334人笔试历年参考题库附带答案详解
- 2026秋季国家管网集团福建公司校园招聘拟录用及人员笔试历年参考题库附带答案详解
- 2026福建泉州市晋江市市政工程建设有限公司权属公司招聘项目制工作人员笔试历年参考题库附带答案详解
- 2026文化和旅游部恭王府博物馆招聘应届毕业生4人考试备考试题及答案解析
- 昆明供电局项目制用工招聘笔试真题2025
- 内蒙古杉杉年产4万吨锂离子电池负极新能源材料加工项目环境影响报告表
- CPU性能测试实验报告
- 2025年光伏组件拆卸和更换施工技术方案
- 香港定居申请书
- 产品动画制作讲解
- 船员机工英语题库及答案
- DB6108T 100-2024 一般工业固体废物矿坑回填修复治理技术规范
- 2025年国家安全部公开遴选公务员面试题及答案
- 订单应急预案管理办法
评论
0/150
提交评论