安卓手机安全卫士程序设计报告.docx
《安卓手机安全卫士程序设计报告.docx》由会员分享,可在线阅读,更多相关《安卓手机安全卫士程序设计报告.docx(51页珍藏版)》请在冰豆网上搜索。
安卓手机安全卫士程序设计报告
安卓手机安全卫士程序设计报告
计算机与信息工程学院
《Android课程设计》报告
班级:
计算机与信息工程学院15级6班
专业:
软件工程
题目:
手机安全卫士
指导教师:
樊富有
导师职称:
教授
学号:
151106026
姓名:
胡隆河
同组人:
陈雨,吴秋,唐育,张欢,蒋安琼,张穗,邹倩,甘语楠,胡隆河
一目的及引言
此次试验是实现一个手机安全的软件,利用Android的四大组件:
Activity、Service、BroadcastReceiver、ContentProvider,采用MVC设计模式。
采用JAVA为编辑语言,利用SQLite轻量级数据库为系统提供数据支持。
主要功能有:
手机防盗、通讯卫士、软件管理、进程管理、流量统计、手机杀毒、缓存管理、高级工具、设计中心等九大功能。
二总体设计
图2-1系统功能模块图
1手机防盗
sim卡变更报警:
当绑定手机号码卡后,设备更换了手机卡讲提示报警。
gps追踪:
获取当前位置,及时上传到远程服务器保存,远程得到当前设备的位置。
可以远程追踪当前设备的位置。
销毁数据:
远程控制手机,自动清空手机内的所有数据,包括:
通讯录,短信,内存数据。
远程锁屏:
远程锁定手机,可以远程向手机发送锁屏指令,控制手机锁屏和重新设置锁屏密码。
2骚扰拦截
电话拦截:
添加拦截的手机号,对已添加的号码的电话拦截。
短信拦截:
添加短信服务号码,拦截已添加的号码发来的所有短信,禁止接收。
3软件管理
用户程序:
是将用户从第三方的应用平台上下载的APP应用数据信息读取出来,进行卸载、运行、分享、详情的操作。
系统程序:
是将手机本身自带的系统应用程序数据信息读取出来,进行卸载、运行、分享、详情的操作。
这个模块主要读取手机中各个应用程序的大小和包名。
4进程管理
获取手机中正在运行中的所有系统进程和用户进程,并且可以对他们进行结束和查看信息,可以同时禁止多个运行中的进程。
系统进程不可以直接终止,只能通过系统自带的终止功能让用户自己终止。
不显示系统核心进程。
5流量管理
这个模块中主要读取系统文件,来对用户流量进行检测,主要显示的有:
上传总流量、下载总流量和共计流量使用情况。
下面还是显示的是对应的应用的logo和应用名称,上传文件使用流量数和下载使用流量数,还有对应的该应用使用流量的总数目。
6病毒查杀
这个模块中使用的是腾讯的病毒数据库,来查对应的应用的MD5码看是不是在病毒数据库中存在,在界面上显示的是:
已扫描软件的个数,发现病毒的个数,下面就是对应的扫描的软件的名称若不在病毒数据库就显示扫描安全,否则就会显示病毒存在。
7缓存清理
这个模块中我是将用户在本地的缓存文件清除在界面上显示的是:
要清除缓存的软件的个数,共占内存有多少。
在屏幕的最下方的位置我放了一个按钮,可以一次全清除。
8高级工具
电话归属地查询:
使用了正则表达式来判断电话号码的合法性,根据用户输入的电话号码来进行对号码的识别和归属地的查询。
常用号码:
这儿主要是可以存储一些比较常用的电话号码,比如订餐,家人,学校等特殊的号码,可以随时提取拨打。
程序加密:
可以对用户已经安装的程序执行加密操作,让用户在打开该程序时需要输入相应的密码才可以进入程序,相当于给程序外加一层安全防护。
9设置
主要模块有:
自动更新设置、电话归属地显示设置、归属地提示框的风格设置、归属地显示提示框位置设置、黑名单设置、程序加密设置。
三详细设计
经过系统的分析,该软件总体上是有一个主界面和主界面上的一些模块组成,在主界面上包含手机防盗、骚扰拦截、软件管理、进程管理、流量管理、病毒查杀、清理缓存、高级工具以及设置等九个模块。
该软件可以对手机中的所有软件进行基本的管理,满足用户安全性和使用性的要求。
1软件升级界面
当打开软件时会自动检测更新,流程图如3-1所示:
图3-1升级界面流程图
2手机防盗
手机防盗模块通过预设密码判断手机是否被盗,如果发生手机被盗事件,手机将自动通过自定义协议发送手机中SIM卡信息和手机的位置信息给安全号码。
如图:
3-2所示:
图3-2防盗流程图
3远程指令控制流程
手机防盗的核心是通过建立Android下的super管理员功能,能远程通过短信指令,对手机设置锁屏密码,远程锁定手机屏幕,远程格式化手机内存卡,恢复出厂设置,而且用户也不能卸载软件,能极大的保护用户的隐私安全。
如发生手机被盗事件,super管理员通过安全手机发送预设指令控制被绑定的手机,从而锁定手机或者销毁数据。
短信指令控制,流程图如3-3所示:
图3-3远程控制指令流程图
4手机杀毒
手机杀毒的实现需要先用PackageManager遍历手机上的所有程序,将扫描到的包名以及数字签名鱼数据库中的病毒对比,发现相同的就视为病毒,弹出删除病毒的界面将其杀死,完成后,返回手机杀毒的界面。
手机杀毒流程图如图3-4所示:
图3-4手机杀毒流程图
四数据库设计
1.数据信息要求:
主要黑名单信息、号码归属地信息、常用号码信息、程序锁信息、手机病毒信息等数据信息。
2.数据信息处理要求:
系统主要完成黑名单信息、号码归属地信息、常用号码信息、程序锁信息、手机病毒信息等信息的添加、删除、修改、查看功能,系统中号码归属地信息和手机病毒信息使用频率比较高,因此在处理方式上要求效率比较高。
3.数据信息安全性与完整性要求:
程序锁信息属于重要信息,因此要求保证数据信息安全,数据信息不能外泄。
1概念设计
1.黑名单实体E-R图
通过对系统需求分析抽象出黑名单、号码归属地、常用号码、程序锁、手机病毒等实体对象,相关实体对象属性图如图4-1所示。
图4-1黑名单实体属性图
2.号码归属地
号码归属地主要是对电话号码的信息进行查询操作,主要包括号码类型、号码归属城市和号码所属城市的区号,如图4-2所示。
图4-2号码归属地实体属性图
3.手机病毒数据实体类
手机病毒数据实体类主要是存储手机的MD5码,主要字段有:
病毒描述、MD5数字签名、病毒ID、病毒类型和应用程序的包名如图4-3所示。
图4-3手机病毒实体属性图
2逻辑设计
1.blacknumber(黑名单表)
黑名单表主要用来将用户不愿意接听的电话和短信进行拦截,该表的主要字段及其含义如图4-4所示。
图4-4黑名单信息表
2.address_db(电话归属地表)
电话归属地表主要用来用户查看来电信息的归属地和查看特定号码的归属地,该表的主要字段及其含义如图4-5所示。
图4-5号码归属地信息表(address_db)
3.applock(程序锁表)
程序锁的数据信息表主要用来保存用户将设置的密码添加了程序锁之后进入应用会读取程序锁表中的数据,该表的主要字段及其含义如图4-6所示。
图4-6程序锁的信息表(applock)
4.antivirus(手机病毒数据信息表)
手机病毒数据信息表主要用来保存用户的手机应用数据和病毒数据库做比对从而进行病毒的查杀,该表的主要字段及其含义如表4-7所示。
图4-7手机病毒数据信息表
五界面设计
1主界面设计
主界面为用户经常操作的界面,而且手机卫士的所有的功能都在主界面里展示,在这个界面用户可以清理手机缓存、设置手机防盗、管理手机的软件和进程等。
其设计过程是界面最上端放置的是一个View控件,放置LOGO,其下方放置是一个自定义的FocusedTextView类,让其继承TextView,重写isFocused的方法,returntrue,这样就骗过了系统,让系统误以为FocusedTextView获取到焦点,这样就能产生一个跑马灯的效果展现到界面上。
其下方的模块就是一个设置numColumns为3的GridView显示出来的,主界面展示如图5-1所示
图5-1主界面
2防盗功能界面设计
手机防盗也是手机卫士最为核心的功能模块,其主要是保护用户的隐私不被泄露,设置初试密码后可开启防盗功能。
手机丢失时,手机接收到SIM卡更换的信息会向事先设置的安全号码发送报警短信,用户通过远程发送设定的指令可遥控手机销毁数据,保护隐私。
(1)设置密码与输入密码设计
开启手机防盗功能第一步,要先设置安全密码,这个对话框设计是定义一个竖直对齐的线性布局LinearLayout,上面定义一个文本内容为设置密码TextView控件,下方设置两个输入类型为textPassword的EditText,用来输入密码和重复密码,而在下方再放置一个水平对齐的线性布局,添加两个权重相同的Button按钮。
其显示效果如图5-2所示。
图5-2手机防盗-设置密码界面
完成密码设置后,再进入手机防盗功能时,会跳转进入到一个用户输入密码的界面,其页面布局和设置密码的页面布局一样,显示效果如图5-3所示。
图5-3手机防盗-输入密码界面
(2)设置向导的详细设计设计
设置向导分四步完成设置手机的防盗功能,其具体的设计如下面四步所示。
图5-4手机防盗设置向导一图5-5手机防盗设置向导二
图5-6防盗设置向导三图图5-7防盗设置向导四图5-8防盗设置完成界面
3骚扰拦截界面设计
通讯卫士可以让用户添加黑名单,在界面上有个添加按钮,点击添加后,在弹出的对话框里输入要加入黑名单的号码,并选择拦截模式,拦截模式有全部拦截、电话拦截、短信拦截三种模式,点击确定,就可以添加成功,添加的数据存储到数据库里,并在通讯卫士界面显示出来。
其界面展示如图5-9、图5-10所示。
图5-9骚扰拦截主界面图5-10骚扰拦截添加界面
4程序管理界面设计
程序管理这个模块通过Listview把手机里面的应用程序给展示到界面上,在界面的上访放置两个Textview用来显示用户手机内存(rom)可用的大小和SD卡可用内存的大小,下面是一个Listview通过遍历把应用程序显示到界面上,然后给你每一个Listview条目都注册了点击事件,在点击每一个条目时,可用Popupwindow方法弹出一个悬浮窗体,上面包含卸载、启动、分享三个点击事件,在点击这些小按钮的时候,可启动其对应的activity,方便于用户的操作。
其界面展示如图5.11所示。
图5-11程序管理界面
5进程管理界面设计
进程管理界面的UI和软件管理界面的UI大致类似,其顶部显示的内容也是通过Textview显示出来的,通过ActivityManager拿到手机正在运行的进程数量和可用内存(ram)的大小,再设置显示到界面上。
Textview下的布局是一个Listview,显示进程的界面是通过创建一个LinearLayout节点的布局文件,里面放置一个Imageview和Textview,右边再放置一个checkbox,来选择要清理的进程。
通过View.inflate方法把xml布局文件填充成一个view对象,显示到界面上。
其主要界面展示如图5-12所示。
图5-12进程管理界面
6流量管理界面设计
流量统计界面的UI和软件管理界面的UI大致类似,其顶部显示的内容也是通过Textview显示出来的,通过ActivityManager拿到手机正在运行的进程数量和可用内存(ram)的大小,再设置显示到界面上。
其主要界面展示如图5-13所示
图5-13流量管理界面
7清理缓存界面设计
缓存清理界面的UI和软件管理界面的UI大致类似,其顶部显示的内容也是通过Textview显示出来的,通过ActivityManager拿到手机正在运行的进程数量和可用内存(ram)的大小,再设置显示到界面上。
其主要界面展示如图5-14所示:
图5-14清理缓存界面
8病毒查杀界面设计
与清理缓存界面类似,此处使用一个listView控件显示搜索的列表,同时用一个Button按钮一键清理功能。
图5-15病毒查杀界面
9高级功能界面设计
此处包含了软件中的其它功能,有归属地、常用号码、程序加密功能。
使用了一个ListView控件显示,通过触摸不同的位置即可打开相应的功能。
如图5-16所示:
图5-16高级功能界面
10设置功能界面设计
缓存清理界面的UI和软件管理界面的UI大致类似,其顶部显示的内容也是通过Textview显示出来的,通过ActivityManager拿到手机正在运行的进程数量和可用内存(ram)的大小,再设置显示到界面上。
其主要界面展示如图5-17所示:
图5-17设置界面
六调试与测试
1、在程序运行后,发现有些权限并不能得到
解决方案:
经过资料翻阅,发现现在的安卓系统版本升级后,到了6.0及以上版本后,有了特殊的一些权限,搜集如下:
group:
android.permission-group.CONTACTS
permission:
android.permission.WRITE_CONTACTS
permission:
android.permission.GET_ACCOUNTS
permission:
android.permission.READ_CONTACTS
group:
android.permission-group.PHONE
permission:
android.permission.READ_CALL_LOG
permission:
android.permission.READ_PHONE_STATE
permission:
android.permission.CALL_PHONE
permission:
android.permission.WRITE_CALL_LOG
permission:
android.permission.USE_SIP
permission:
android.permission.PROCESS_OUTGOING_CALLS
permission:
com.android.voicemail.permission.ADD_VOICEMAIL
group:
android.permission-group.CALENDAR
permission:
android.permission.READ_CALENDAR
permission:
android.permission.WRITE_CALENDAR
group:
android.permission-group.CAMERA
permission:
android.permission.CAMERA
group:
android.permission-group.SENSORS
permission:
android.permission.BODY_SENSORS
group:
android.permission-group.LOCATION
permission:
android.permission.ACCESS_FINE_LOCATION
permission:
android.permission.ACCESS_COARSE_LOCATION
group:
android.permission-group.STORAGE
permission:
android.permission.READ_EXTERNAL_STORAGE
permission:
android.permission.WRITE_EXTERNAL_STORAGE
group:
android.permission-group.MICROPHONE
permission:
android.permission.RECORD_AUDIO
group:
android.permission-group.SMS
permission:
android.permission.READ_SMS
permission:
android.permission.RECEIVE_WAP_PUSH
permission:
android.permission.RECEIVE_MMS
permission:
android.permission.RECEIVE_SMS
permission:
android.permission.SEND_SMS
permission:
android.permission.READ_CELL_BROADCAST
这些权限需要在程序运行过程中动态申请,否则将无法使用相应的功能。
详解见:
七心得体会
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
该平台由操作系统、中间件和应用软件组成,是第一个可以完全定制、免费、开放的手机平台。
Android是一个免费的手机平台。
(资料来源:
XX百科)
此次通过做Android手机卫士的开发实验项目,自己做交互式界面,服务器搭建,数据库设置,完成App主要逻辑,修改自定义对话框,优化界面,获取手机联系人,设置加密等内容,加深了对上课所学知识的理解。
完成这个项目之后,以前觉得复杂的布局文件,现在变得简单易懂。
从之前面对一个项目的无从下手,到现在一步步的分析项目。
实践检验问题,在做项目过程中,尽管遇到了很多问题,但是通过同学们和自己查询的一些资料,一点点理清程序逻辑代码,修正错误。
提高了自己对编程的兴趣,同时也加深了对所学知识的理解。
八程序清单
以下是部分程序源码:
1.main.xml
主界面设计源码
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
android="
android:
layout_width="fill_parent"
android:
layout_height="fill_parent"
android:
orientation="vertical"
android:
background="#FFFFFF">
android:
layout_width="match_parent"
android:
layout_height="200dp"
android:
background="@drawable/logo"/>
android:
layout_width="fill_parent"
android:
layout_height="1dip"
android:
layout_marginTop="5dip"
android:
background="@drawable/devide_line"/>
android:
listSelector="@android:
color/transparent"
android:
id="@+id/gv_main"
android:
layout_width="match_parent"
android:
layout_height="match_parent"
android:
gravity="center"
android:
numColumns="3"
android:
layout_marginTop="5dip">
主界面逻辑设计源码
packagecom.guoshisp.mobilesafe;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.AdapterView.OnItemClickListener;
importandroid.widget.GridView;
importcom.guoshisp.mobilesafe.adapter.MainAdapter;
importandroid.view.*;
publicclassMainActivityextendsActivity{
//显示主界面中的九大模块的GridView
privateGridViewgv_main;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
//取消标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
gv_main=(GridView)findViewById(R.id.gv_main);
//为gv_main对象设置一个适配器,该适配器的作用是用于为每个item填充对应的数据
gv_main.setAdapter(newMainAdapter(this));
//为GridView对象中的item设置点击时的监听事件
gv_main.setOnItemClickListener(newOnItemClickListener(){
//参数一:
item的父控件,也就是GridView参数二:
当前点击的item参数三:
当前点击的item在GridView中的位置
//参数四:
id的值为点击了GridView的哪一项对应的数值,点击了GridView第9项,那id就等于8
publicvoidonItemClick(AdapterView
>parent,Viewview,
intposition,longid){
switch(position){
case0:
//手机防盗
//跳转到”手机防盗“对应的Activity界面
IntentlostprotectedIntent=newIntent(MainActivity.this,LostProtectedActivity.class);
startActivity(lostprotectedIntent);
break;
case1:
//骚扰拦截
IntentcallSmsIntent=newIntent(MainActivity.this,CallSmsSafeActivity.class);
startActivity(callSmsIntent);
break;
case2:
//程序管理
IntentappManagerIntent=newIntent(Ma