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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要:来电防火墙主要基于黑白名单的电话和短信过滤功能,再结合数据库的使用,达到来电或者信息屏蔽黑名单的作用。

黑名单连接到数据库,可以进行简单的添加、修改、删除等操作。

来电或者收到信息之后,手机自动搜索黑名单,将来电号码与黑名单中的号码进行比较,如果有改号码在黑名单中,则手机直接将该电话或者短信屏蔽掉。

此外还有基于GPS的手机防盗功能;电话录音和留言功能;隐私空间。

系统的界面使用Photoshop的按钮控件、XML语言界面设计使操作更简单。

系统使用SQLite数据库,Eclipse开发工具,Android SDK开发环境,利用Google Android API、java语言来实现。

最后,对系统采用模拟器预览效果,并对系统进行了部署和真实的体验测试。

关键词:Android;智能手机;防火墙
中图分类号:TN929.53;TP393.08
目前随着移动设备越来越普及以及移动设备的硬件的提升,移动设备的功能越来越完善。

移动设备的系统平台也日渐火热起来。

3G时代的到来也是助推移动设备的火热发展的一个大因素。

目前国内最常见的移动开发平台有Symbian,iPhone,Windows Phone以及当下正在逐步兴起的Android。

目前为止国内已经有很多Android系统用户[1]。

1 需求分析
1.1 黑/白名单的电话和短信过滤功能分析
1.1.1 黑名单可选择模式
黑名单的有三种拦截模式:只拦截电话,只拦截短信,两者都拦截。

在黑名单表中有姓名、电话、拦截模式等字段。

实现原理:软件启动后有一个服务)service)在后台运行,在服务中注册有一个监听器,监听电话的状态,当有电话来时,状态会变成响铃状态,在这里可以取得来电的号码。

这时遍历表中的黑名单,看是否有号码和来电号码匹配,如果匹配就是该拦截的号码,这里就把电话结束掉,并写入拦截表中,弹出通知告知有电话被拦截[2]。

短信的拦截和电话拦截不一样,有两种实现方法:
(1)接收系统短信广播:当收到短信时,Android系统会发出一个广播,通知收到短信,拦截短信基于Android中的广播机制。

Android中的广播机制是所有注册了该广播监听器的程序都收到广播(只要先收到广播的应用程序没有结束掉该广播),当收到广播就会触发收到广播的事件,可以在这里处理短信,本程序采用这种方法[3]。

优点:可以拦截来信在状态栏的显示通知,适合短信拦截。

缺点:可以发展成MU,在后台悄悄的收/发短信
(2)应用观察者模式,监听短信数据库,操作短信内容:当系统收到短信时,会将短信写入短信数据库,可以注册一个监听器来监听短信数据库的变化。

当短信数据库变化时就触发这个事件,在这里可以处理短信。

优点:操作方便,适合简单的短信应用。

缺点:来信会在状态栏显示通知信息。

1.1.2 白名单拦截模式
白名单拦截是指除了名单中有的号码,其它号码都拦截。

这种拦截方式可以真正做到把不想接听的电话和不想收到的短信全部排除在外。

白名单拦截方式和黑名单类似。

流程:有电话进来,从数据库中查询所有的号码,看看是不是白名单中的号码,如果是就接听电话,否则就挂断,写入拦截数据表,弹出通知有拦截电话;短信的操作和这类似。

1.1.3 多种方式添加黑/白名单
添加黑/白名单主要是依赖Android中的内容提供者(ContentProvider)和内容访问者(ContentResolver)的机制,在这里主要是使用了系统的ContentProvider。

(1)系统联系人:可直接从系统联系人中添加名单到黑/白名单,利用上面提到的系统提供的ContentProvider来访问联系人数据库,查询所有联系人的名字和号码信息。

可批量添加到黑/白名单数据库。

(2)通话记录:可从通话记录中添加名单到黑/白名单,同样使用系统提供的ContentProvider来访问通话记录数据库。

(3)短信记录:可从短信记录添加名单到黑/白名单,也是使用了系统提供的ContentProvider来访问通话记录数据库。

从短信记录添加进去的是短信的内容和号码,而不是名字。

(4)手动输入:当然,我们可以手动输入要添加的号码和名字。

1.2 关键字的短信过滤功能分析
原理分析:注册广播接收器,监听系统短信广播,操作短信内容: 当系统收到短信时,会向系统发送广播,可以注册一个监听器来接收系统的短信广播。

在这里可以查看短信中包括的内容是否有我们的关键字,如果有就拦截该短信;如果没有就不做处理。

关键字有系统自带关键字和手动添加关键字。

2 程序设计
2.1 基于黑/白名单的电话过滤功能设计
2.1.1 设计思路
当有来电时取得来电号码,把这个号码交给来电处理类PhoneHandler,在这个类里面从数据库中取出数据对比这个号码符合我们的什么操作。

主要是基于一张名单表(list),在这张表里有来电号码(list_phone),姓名(list_name),名单类型(list_type),拦截类型(list_method),拦截说明(list_method_bak)等。

首先判断拦截模式,然后判断是否在名单中,最后判断号码类型。

判断出结果后来决定是否拦截这个电话或这条短信。

2.1.2 关键代码及解释
在本程序中注册了一个电话监听器和一个短信广播接收器。

电话监听器时刻监听Android电话服务程序,电话有三种状态:空闲,响铃和摘机。

平时电话处于空闲状态,当有电话进来时就进入响铃状态,在这里能得到来电号码,这时把来电号码交给电话处理类PhoneHandler来处理。

还有一个广播接收器程序,它负责监听短信广播。

当有短信进来时,Android系统会向整个系统发送一个广播,所有注册了该广播接收器的程序都能接收到这个广播,但是广播的发送是有顺序的,从优先级别高的到优先级别低的。

在本程序中把收听广播的优先级别设置为1000,它会先收
到短信广播。

2.2 基于关键字的短信过滤功能的设计
设计思路:在广播中取到短信的内容,利用ng.String类的contains(key)方法可以判别短信内容是否key这个关键字,如果包涵就判别这条短信是我们该拦截的垃圾短信。

在数据库中有一张关键字表(smskey),当收到短信后去遍历这张表中的关键字,就可以得到我们的结果。

3 结束语
经过测试,本系统实现了预定要实现的功能,并且运行良好。

实现的基本功能有基于黑/白名单的电话和短信拦截功能,基于关键字的短信拦截功能等。

在实现这些功能的同时,仍然还有需要改进的东西,用户体验效果待改进等。

参考文献:
[1]刘兵,吴煜煜.Linux实用教程[M].北京:中国水利水电出版社,2004,48.
[2]柯元旦.Android内核剖析[M].北京:电子工业出版社,2011,32.
[3]孙晓宇.Android手机界面管理系统的设计与实现[D].北京:北京邮电大学,2009.。

相关文档
最新文档