欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于Android系统的手机防火墙的设计与实现.doc

    • 资源ID:2394103       资源大小:445KB        全文页数:23页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Android系统的手机防火墙的设计与实现.doc

    南 阳 理 工 学 院 本科生毕业设计(论文)学院(系): 软件学院 专 业: 软件工程 学 生: 李 浩 然 指导教师: 高 需 完成日期 2011 年 4 月南阳理工学院本科生毕业设计(论文)基于Android系统的手机防火墙的设计与实现Design and Implement of Mobile Phone Firwall System based on Android总 计: 25 页表 格: 3 个插 图: 14 幅南 阳 理 工 学 院 本 科 毕 业 设 计(论文)基于Android系统的手机防火墙的设计与实现Design and Implement of Mobile Phone Firwall Systembased on Android学 院(系): 软件学院 专 业: 软件工程 学 生 姓 名: 李 浩 然 学 号: 68107070 指 导 教 师(职称): 高需(讲师) 评 阅 教 师: 完 成 日 期: 南阳理工学院Nanyang Institute of Technology基于Android系统的手机防火墙的设计与实现软件工程专业 李浩然摘要欺诈短信和骚扰电话时常在我们身边发生,尤其对于防范意识薄弱的老人和小孩来说更需要一款特定的软件来监听和保护他们的通讯安全,而作为不久的将来具有很大用户群的Android系统手机必须有一款针对短信和电话的防火墙软件,它不仅可以过滤恶意电话和诈骗短信,而且可以对被监护人进行实时监控,让监护人及时能够知道被监护人的电话和短信内容。防火墙主要采用广播监听技术,自定义一个广播接收者BrocastReciver来接收传来的广播,用SQLite建立黑名单数据库和关键字数据库,接到广播之后进行过滤和终止这个广播,电话实时录音。关键词广播监听;黑名单;白名单;关键字;过滤 Design and Implement of Mobile Phone Firwall Systembased on AndroidSoftware Engineering Major Li Hao-ranAbstract: Fraud text messaging and harassing phone calls often happens to us,especially for the guard consciousness weak for old people and children need more of a specific software to monitor and protect their communications security. But as the future of Android has great user groups in one of the mobile phones must be system for SMS and phone firewall software, It not only can filter malicious phone and fraud messages, To be the guardian, and also can do real-time monitoring, let the guardian can know it in time by guardian's phone and text message content. Firewall mainly USES the radio surveillance technology, customize a radio receiver came BrocastReciver to receive the broadcast, with SQLite establish blacklist database and keywordsdatabase, after receiving broadcast filter and terminate the radio, telephones even do real-time recording.Key words: Radio listening;Black List;White List;keyword ;filter目 录1 引言11.1软件开发背景11.2 软件开发的意义22相关技术介绍22.1 Android系统的架构22.1.1 应用程序22.1.2 应用程序框架32.1.3 系统运行库32.1.4 Linux内核42.2 Android应用程序的主要组件42.2.1 行为42.2.2 意图42.2.3 意图接收器52.2.4 服务52.2.5 内容提供者52.2.6 意图类63基于Android系统手机防火墙需求分析63.1 基于Android系统手机防火墙运行环境63.2 基于Android系统手机防火墙技术上的可行性分析63.3 需求分析63.3.1 防火墙短信过滤与监听73.3.2 防火墙电话过滤与监听73.3.3 防火墙来电归属地查询部分83.3.4 防火墙监护人注册部分84 基于Android系统手机防火墙的设计94.1 防火墙短息部分设计94.1.1 短息过滤设计94.1.2 短息监听设计94.2 防火墙电话部设计104.2.1 电话过滤设计104.2.2 电话监听设计104.3 来电信息查询设计114.4 监护人注册设计124.5 防火墙UI的设计135 基于Android系统手机防火墙的实现135.1 数据库的实现135.1.1 关键字黑名单白名单数据库表的建立135.1.2 数据库里数据的增删查改操作145.2 短信防火墙部分实现155.2.1 短信过滤部分155.2.2 短信转发部分155.3 电话防火墙部分实现155.3.1 电话过滤部分155.3.2 电话录音165.3.3 转发电话信息165.4 归属地查询165.4.1 提交电话数据165.4.2 解析响应信息165.4.3 显示电话信息175.5 监护人注册部分175.5.1 查看监护人电话175.5.2 注册监护人电话185.5.3 删除监护人电话18结束语19参考文献19致 谢191引言基于Android系统的手机防火墙主要是针对短信和电话进行过滤,它能够实现对短信实行关键字和号码进行过滤,能够过滤那些垃圾广告短信,系统自带了一些常用的垃圾短信数据库,它也可以自定义,用户可以自行添加修改删除关键字,能够根据自己的需要和最新的常见垃圾短信内容进行过滤拦截它。它也可以对电话进行黑名单过滤,如果在黑名单之内的电话会自动挂断,对于不在黑名单的电话进行实时录音并通监护人,监护人可以在第一时间内获得来电号码和通话内容。基于Android系统的这款手机防火墙软件UI界面简洁易用,用户一看就知道对哪一项进行设置。在添加黑名单时可以显示通讯录的名单列表,这样可以方便用户把联系人加入黑名单,使曾经的联系人不能骚扰自己。也可以设置某些联系人来电静音状态,满足了用户不想接某人的电话但又不想挂断的想法,这样也不必将电话赶紧调成静音或者放置在角落里任凭它响直到对方把电话挂断为止。来电归属地查询方面,当陌生人打电话响了一下又挂断时,可以查询来电的地址和信息,以便判断自己是否有可能认识对方,如果不认识但又常打过来骚扰可以直接加入黑名单。总之,这款基于Android系统防火墙强软件是很适合做防诈骗防骚扰的软件,更适合缺乏防范意识的老人和小孩子用,这样家人能够及时了解到老人和孩子的通讯情况,他们好安心工作。1.1 软件开发背景随着3G的普及,我们已经开始进入移动互联网时代了,手机已经不是简单的通讯工具了,它已经成为人们休闲娱乐工作生活为一体的必须品,地铁上,公交上,火车上,面对这些无聊的漫长时光我们怎样度过呢,当然不仅仅选择用手机发个短信聊聊天之类的,而是用手机上网娱乐和游戏一把,可见智能手机的发展速度,不久的将来拥有智能手机的用户数量一定会超过拥有电脑的数量,而Android系统是智能手机的佼佼者,它虽然没有IPhone的某些方面体验好,但它的性价比比较高的,它的价格更容易让用户接受,所以未来的用户群一定非常庞大,因为Android系统是开源的,所以它吸引更多的开发者投入到Android的阵营里来,有这么多人来研究开发Android软件,它的用户体验和软件一定会日新月异。随着使用Android系统手机的用户数量的增多,许多安全问题就随之而来,比如网络安全和通讯安全方面。现在大多数杀毒软件公司都较注重网络安全这块儿,稍微忽略了通讯和信息安全方面,尤其对欺诈防范意识薄弱的群体更需要这方面的软件来保护他们的通讯和信息的安全,让他们的短信和电话能够及时让监护人知道并判断是否安全,他们也需要自定义黑名单不接某人的电话和阻止什么样的内容的短信,以及可以对联系人可以设置来电接听方式,以及判断未接来电的信息这样可以确认是否是陌生人,如果来电是从外地打来的而且那里没有自己认识的人就确定不回电话。1.2 软件开发的意义基于Android系统的手机防火墙软件很好的解决了过滤广告和诈骗的垃圾短信,能够对电话进行监听和黑名单拦截自动挂断,使自己的手机不再是敞开的大门谁都可以来,谁都可以敲敲门就跑的了,这款软件就是一个你手机的站岗的卫士,没有经过他的允许是无法通过的,这样你生活中就不会在工作或者等候朋友的短信时莫名其妙的来一条垃圾短信,让你欣喜的打开时却又转而很失望,并且感到自己的权利被陌生人侵犯了。你也不必担心在某些陌生电话打过来骚扰你一下又挂了,你可以查看它的归属地信息并确定不是你的朋友或家人,如果它再打过来你可以选择加入黑名单直接挂断或设置成此电话打进来设置成静音模式。如果家里的小孩或者老人安装此软件,你就解决了工作时的后顾之忧了。他们的通信记录都会及时通知你,在第一时间你可以知道短信的内容和发送方电话号码,电话的内容会录制到手机里,并且会发送到你的邮箱里,第一时间用短信提示你有通话记录发到你的邮箱里。这样你就不会担心孩子和老人会遇到诈骗短信和恶意电话了,你可以安心的做你的工作的同时对他们进行监护。这款手机防火墙软件除了系统自带的一些常见的诈骗和广告性质过滤关键字数据库还可以自行进行添加修改删除操作,可以根据自己的情况来丰富信息过滤的范围。总之,基于Android系统的手机防火墙软件能够对短信和电话进行有效的过滤和设置,而且可以方便监护人对老人和小孩的实时的监控不安全的通讯记录,让大家在使用Android智能手机享受移动互联网的快乐的同时减少不必要的担心和烦恼。2相关技术介绍2.1 Android系统的架构 Android的系统架构和其操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层2.1.1 应用程序Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的1。2.1.2 应用程序框架开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括:丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器; 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据:资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files );通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息; 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。2.1.3 系统运行库系统运行库包括程序库和Android运行库。首先是程序库,Android 包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的;媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG ; Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合; LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图;SGL - 底层的2D图形引擎;3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速;FreeType -位图(bitmap)和矢量(vector)字体显示;SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。其次是Android 运行库,Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。2.1.4 Linux内核Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。Linux 内核也同时作为硬件和软件栈之间的抽象层。2.2 Android应用程序的主要组件对于一个Android应用程序来说,是由四种构造块组织而成的,这四种构造块如下: Activity ;Intent Receiver;Service ;Content Provider。 但是,并不是每一个Android应用程序都需要这四种构造块,这不是必须的,某些时候,我们只需要这四种中的几种组合成我们的应用。  当我们明确了我们的应用需要哪些构造块后,我们就需要在AndroidManifest.xml中登记这些构造块的清单。这是一个XML配置文件,这个配置文件用于定义我们的应用程序的组件、组件的功能及必要条件等。这个配置文件是每个Android应用必需的。对于 AndroidMainfest.xml的Schema,参考SDK包附带的文档。2.2.1行为Activity是Android构造块中最基本的一种,在应用中,一个activity通常就是一个单独的屏幕。每一个activity都被实现为一个独立的类,并且继承于Activity这个基类。这个activity类将会显示由几个Views控件组成的用户接口,并对事件做出响应。大部份的应用都会包含多个的屏幕。例如,一个短消息应用程序将会有一个屏幕用于显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。每一个这样的屏幕,就是一个activity。从一个屏幕导航到另一个屏幕是很简单的。在一些应用中,一个屏幕甚至会返回值给前一个屏幕。当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不再使用时,还可以从历史堆栈中删除。默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕2。 2.2.2意图 Android使用了Intent这个特殊类,实现在屏幕与屏幕之间移动。Intent类用于描述一个应用将会做什么事。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有:MAIN(activity的门户)、VIEW、PICK、EDIT等。而动作对应的数据则以URI的形式进行表示。例如:要查看一个人的联系方式,你需要创建一个动作类型为VIEW的intent,以及一个表示这个人的URI。 与之有关系的一个类叫IntentFilter。相对于intent是一个有效的做某事的请求,一个intent filter则用于描述一个activity(或者Intent Receiver)能够操作哪些intent。一个activity如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter要知道怎么去处理VIEW动作和表示一个人的URI。IntentFilter需要在AndroidManifest.xml中定义。 通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,activity将会调用startActivity(Intent myIntent)方法。然后,系统会在所有安装的应用程序中定义的IntentFilter中查找,找到最匹配myIntent的Intent对应的activity。新的activity接收到myIntent的通知后,开始运行6。当startActivity方法被调用将触发解析myIntent的动作,这个机制提供了两个关键好处:  A、Activities能够重复利用从其它组件中以Intent的形式产生的一个请求;   B、Activities可以在任何时候被一个具有相同IntentFilter的新的Activity取代。 2.2.3意图接收器当你希望你的应用能够对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)做出响应,你可以使用一个Intent Receiver。虽然Intent Receiver在感兴趣的事件发生时,会使用NotificationManager通知用户,但它并不能生成一个UI。Intent Receiver在AndroidManifest.xml中注册,但也可以在代码中使用Context.registerReceiver()进行注册。当一个intent receiver被触发时,你的应用不必对请求调用intent receiver,系统会在需要的时候启动你的应用。各种应用还可以通过使用Context.broadcastIntent()将它们自己的intent receiver广播给其它应用程序。2.2.4服务一个Service是一段长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service一直执行,直到这个service运行结束。另外,我们还可以通过使用Context.bindService()方法,连接到一个service上(如果这个service还没有运行将启动它)。当连接到一个service之后,我们还可以service提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作5。2.2.5内容提供者 应用程序能够将它们的数据保存到文件中、SQL数据库中,甚至是任何有效的设备中。当你想将你的应用数据与其它的应用共享时,Content Provider将会很有用。一个Content Provider类实现了一组标准的方法,从而能够让其它的应用保存或读取此Content Provider处理的各种数据类型。 2.2.6 意图类 Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调 用者之间的解耦。3 基于Android系统手机防火墙需求分析3.1 基于Android系统手机防火墙运行环境操作系统:Android 系统2.0以上版本。数据库: 采用Android系统自带的SQLite数据库。运行条件:因为有部分功能是采用webservie 来完成的,所以手机必须是联网状态才能充分发挥软件的功能优势。开发工具:eclipse3.4 + Android智能手机摸拟器 + 摩托罗拉Droid(Android 2.0)实机3.2 基于Android系统手机防火墙技术上的可行性分析短信防火墙模块,Android 中的通信都是以intent 方式传输的,短信也不例外。当手机接收到短信时会先存入手机中的短信数据库中,再广播出含有短信的intent。所有有权限接收到这类广播的程序都会收到。所以有两种方式可以处理收到的短信。一种是自己定义一个接收者(receiver)方式来接收含有短信的intent。另一种是手机短信数据库监听方式,当收到短信时短信数据库一定有变化,以此来激活程序运行。这里我用第一种方法来接收短信intent,为了第一时间得到广播可以设置接收者的优先级最高,这样可以先得到短信信息并设置过滤规则,如果输入拦截信息就终止此广播,让系统自带的广播接收者无法接收到此广播,也就不提醒用户有信息4。电话防火墙也是采用自定义广播接收者(receiver)方式来接收电话信息,然后设置过滤规则,当来电属于黑名单时采用自动挂断的方式。 3.3 需求分析按用户的需求初步将防火墙从以下三个方面进行分析。3.3.1 防火墙短信过滤与监听下边图3-1是这部分的需求分析的用例图和用例描述:图3-1 短信拦截基本事件流:1.系统接收到短信;2.分析读取短信的发送地址和具体内容;3.通过黑名单和关键字分别过滤短信是不是黑名单中的号码或者内容是否含有关键字;4.如果是属于黑名单或者短信内容则终止短息 3.3.2 防火墙电话过滤与监听如果遇到经常骚扰自己的电话,或者一些陌生电话打一下就挂断的,可以加入黑名单,只要是黑名单里的电话来电时会自动挂断电话。当被监护人的来电不是黑名单和静音名单时,电话进来时启动录音功能将通话信息录制下来,存储在被监护人手机上,此时通知监护人有电话进来并及时查看通话录音,如果通话内容具有诈骗性质的或者其它恶意的可以及时提醒被监护人。图3-2是这部分的用例图和用例描述:基本事件流:1.读取电话信息;2.将来电号码进行黑名单和白名单过滤;3.如果来电是属于黑名单自动挂断电话。图3-2 电话过滤与监听3.3.3 防火墙来电归属地查询部分有时候来电打电话铃响一下就挂了,又不知道到底是哪的电话也不知到底是回还是不回。还有的时候手机忘带或者没有听到铃声,当看到未接来电是陌生人时,不知道对方是哪地方的,回又怕是扣钱的那种电话,不会又怕商了感情。于是想查询下来电信息时否可能认识,再确定回还是不回电话3.3.4防火墙监护人注册部分当我们接到诈骗短信或者电话时,有种防范意识可以在一定程度上判断是否属于诈骗,但老人和小孩子这种防范意识薄弱的人群怎样才能在一定程度上避免受骗呢?他们的电话和短息能够又监护人知道,通过及时的判断来减少损失。但又不能每天跟着他们吧,因为还要上班工作,所以如果一款软件安装到被监护人手机上,并及时将来电信息和短息转发到监护人手机上,并通知查看,这样就能很方便的进行实时保护了。下面就是用例分析: 基本事件流:1.查看监护人电话;2.监护人注册电话;3.删除需要更改的监护人电话。图3-3 监护人注册4基于Android系统手机防火墙的设计4.1 防火墙短息部分设计4.1.1 短息过滤设计当系统接收到短信之后,进行内容解析,分别进行白名单(国家公共信得过单位电话,如银行,海关,移动运营商电话等)过滤,黑名单过滤和关键字过滤。如果短信发送方属于白名单就接收,如果属于黑名单就不通知用户有短息进来,终止这条短信。如果短信发送方即不属黑名单也不属白名单也不属于联系人,然后就进行内容关键字过滤,如果内容含有关键字,就终止此条短信,不提醒用户接收到此短息。4.1.2 短息监听设计有时候关键字和黑名单不能够完全拦截一些诈骗短信,那么最后一道关就是其监护人对其判断了。这就需要将短信内容转发给监护人。这部分的设计是,当系统广播广播出短信之后,广播接收者提取短信信息,然后进行过滤操作之后,确定转发给监护人。4.2 火墙电话部设计4.2.1 电话过滤设计设计一个广播接收者,当接收到电话广播意图之后,提取出来电号码,然后对号码进行检索和过滤,分别进行白名单过滤,黑名单过滤,如果来电是属于白名单,则进行正常通话,如果来电是属于黑名单,则将自动挂断电话。图4-2 电话过滤4.2.2 电话监听设计 这部分利用一个意图来实现电话录音的,启动这个意图利用的是开机广播。这个意图是采用监听电话状态,如果来电是通话状态就调用多媒体函数来进行录音通话内容,并将录音内容存放在SDcard里面,而且第一时间通知监护人有来电并录音,请及时查看。系统设计如下:图4-3 电话监听4.3 来电信息查询设计用户将号码输入,并提交给Web服务器,服务器将返回响应信息XML数据,然后用pull进行解析XML文件,将结果显示给用户。图4-4 归属地查询4.4 监护人注册设计这里采用数据库存储监护人电话,只能注册一个监护人电话。用户可以查看用户人,也可以删除用户人电话,重新注册。图4-5 监护人电话注册4.5 防火墙UI的设计因为考虑到手机用户的体验效果,尽量使界面看起来简单明了而且美观大方。这里利用TagActivit来实现一个主界面通过按钮来切换其它功能界面。控件都采用自定义的样式。 5基于Android系统手机防火墙的实现5.1 数据库的实现5.1.1 关键字黑名单白名单数据库表的建立 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软件时创建出应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要对数据表结构进行更新。那么,我们如何才能实现在用户初次使用或升级软件时自动在用户的手机上创建出应用需要的数据库表呢?总不能让我们在每个需要安装此软件的手机上通过手工方式创建数据库表吧?因为这种需求是每个数据库应用都要面临的,所以在Android系统,为我们提供了一个名为SQLiteOpenHelper的抽象类,必须继承它才能使用,它是通过对数据库版本进行管理来实现前面提出的需求。 为了实现对数据库版本进行管理,SQLiteOpenHelper类提供了两个重要的方法,分别是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),前者用于初次使用软件时生成数据库表,后者用于升级软件时更新数据库表结构。当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteDatabase实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreate()方法,onCreate()方法在初次生成数据库时才会被调用,在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。onUpgrade()方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的,假设数据库现在的版本是1,由于业务的变更,修改了数据库表结构,这时候就需要升级软件,升级软件时希望更新用户手机里的数据库表结构,为了实现这一目的,可以把原来的数据库版本设置为2(有同学问设置为3行不行?当然可以,如果你愿意,设置为100也行),并且在onUpgrade()方法里面实现表结构的更新。当软件的版本升级次数比较多,这时在onUpgrade()方法里面可以根据原版号和目标版本号进行判断,然后作出相应的表结构及数据更新。getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase() 方法就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。下边表5-1、表5-2、表5-3分别是黑名单表、白名单表、关键字表的结构。表5-1 黑名单表字段名数据类型主键IdInteger是phoneVarchar否表5-1 白名单表字段名数据类型主键IdInteger是Whte_honeVarchar否表5-1 关键字特征库表字段名数据类型主键IdInteger是whoneVarchar否5.1.2 数据库里数据的增删查改操作 这部分用了继承了SQLiteDatebase的类来封装对数据库的操作,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。这里我用execSQL()和rawQuery()方法分别实现对对数据库的更新操作和查询操作。 execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句; rawQuery()方法用于执行select语句。调用getWritableDatabase()或getReadableDatabase()方法后,会 缓存SQLiteDatabase实例,因为这里是手机应用程序,一般只有一个用户访问数据库,所以建议不关闭数据库,保持连接状态。 getWritableDatabase(),getReadableDatabase的区别是当数据库写满时候,调用前者会报错,调用后者不会,所以如 果是不是更新数据库的话,最好调用后者来获得数据库连接。5.2 短信防火墙部分实现5.2.1 短信过滤部分短信过滤定义了一个Listener 继承BroadcastReceiver,并在功能清单里定义这个自定义广播接收者,再定义其优先级priority值为 1000,这样当信息广播传到系统时,第一时间得到广播。在Listener获取广播意图的值,然后和短信意图相对比,短信广播意图值为“android.provider.Telephony.SMS_RECEIVED“,如果是短信广播意图,则通过Bundle来获取广播信息,然后通过解析把短信内容和地址号码分开。将号码分别进行白名单和黑名单进行过滤,如果号码属于白名单怎广播不中止,如果号码属于黑名单则短信广播中止,如果号码既不属于白名单又不属于黑名单,则进行关键字过滤,如果含有关键则中止广播。中止广播用函数abortBroadcast()。5.2.2 短信转发部分这里利用自定义广播接收者Listener获取的广播信息,解析短信内容存于字符串中,如果短信广播不中止,且属于陌生人号码,但不含有过滤关键字,则同过SmsManager.getDefault()来获取短信转发器。然后根据短信地址和利用SmsManager来获取系统短信转发器,然后根据拦截的短信地址和内容将短信转发给监护人。调用函数 sendTextMessage(destinationAddress, null, text, null, null)来发送短信。destinationAddress为发送目标号码,text为短信内容。5.3 电话防火墙部分实现5.3.1 电话过滤部分在自定义广播接收者Listener类中获取广播意图的值,然后和电话意图值比较,电话意图值为"android.intent.action.PHONE_STATE",然后通过意图获取来电号码 ,方法为intent.getStringExtra("incoming_number")。对于挂断电话的实现,1.1版本后.Google已经把该API隐藏掉。可以可以通过AIDL(Android远程方法)及反射来实现,这里我用反射来调用hide API。在项目中新建包com.android.internal.telephony,因为要使用AIDL, 在该包下新建文件ITelephony.aidl该包与ITele

    注意事项

    本文(基于Android系统的手机防火墙的设计与实现.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开