安卓手机安全卫士程序设计报告_第1页
安卓手机安全卫士程序设计报告_第2页
安卓手机安全卫士程序设计报告_第3页
安卓手机安全卫士程序设计报告_第4页
安卓手机安全卫士程序设计报告_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机与信息工程学院计算机与信息工程学院 Android 课程设计课程设计 报告报告 班 级 计算机与信息工程学院 15 级 6 班 专 业 软件工程 题 目 手机安全卫士 指导教师 樊富有 导师职称 教 授 学 号 151106026 姓 名 胡隆河 同 组 人 陈雨 吴秋 唐育 张欢 蒋安琼 张穗 邹倩 甘语楠 胡隆河 宜宾学院 2017 年 11 月 23 日 目录 一目的及引言 4 二总体设计 5 1 手机防盗 5 2 骚扰拦截 5 3 软件管理 5 4 进程管理 6 5 流量管理 6 6 病毒查杀 6 7 缓存清理 6 8 高级工具 6 9 设置 6 三详细设计 7 1 软件升级界面 7 2 手机防盗 8 3 远程指令控制流程 9 4 手机杀毒 10 四数据库设计 11 1 概念设计 11 2 逻辑设计 12 五界面设计 14 1 主界面设计 14 2 防盗功能界面设计 15 3 骚扰拦截界面设计 17 4 程序管理界面设计 18 5 进程管理界面设计 19 6 流量管理界面设计 20 7 清理缓存界面设计 21 8 病毒查杀界面设计 22 9 高级功能界面设计 23 10 设置功能界面设计 24 六调试与测试 25 七心得体会 27 八程序清单 28 一 目的及引言 此次试验是实现一个手机安全的软件 利用 Android 的四大组件 Activity Service Broadcast Receiver Content Provider 采用 MVC 设计模式 采用 JAVA 为编辑语言 利用 SQLite 轻量级数据库 为系统提供数据支持 主要功能有 手机防盗 通讯卫士 软件管理 进程管理 流量统计 手机杀 毒 缓存管理 高级工具 设计中心等九大功能 5 二 总体设计 图2 1 系统功能模块图 1 手机防盗 sim 卡变更报警 当绑定手机号码卡后 设备更换了手机卡讲提示报警 gps 追踪 获取当前位置 及时上传到远程服务器保存 远程得到当前设备的位置 可以远程 追踪当前设备的位置 销毁数据 远程控制手机 自动清空手机内的所有数据 包括 通讯录 短信 内存数据 远程锁屏 远程锁定手机 可以远程向手机发送锁屏指令 控制手机锁屏和重新设置锁屏密 码 2 骚扰拦截 电话拦截 添加拦截的手机号 对已添加的号码的电话拦截 短信拦截 添加短信服务号码 拦截已添加的号码发来的所有短信 禁止接收 3 软件管理 用户程序 是将用户从第三方的应用平台上下载的 APP 应用数据信息读取出来 进行卸载 运行 分享 详情的操作 系统程序 是将手机本身自带的系统应用程序数据信息读取出来 进行卸载 运行 分享 详情的操作 这个模块主要读取手机中各个应用程序的大小和包名 安全卫士 手机防盗 骚扰拦截 软件管理 进程管理 流量管理 病毒查杀 清理缓存 高级工具 设置 6 4 进程管理 获取手机中正在运行中的所有系统进程和用户进程 并且可以对他们进行结束和查看信息 可以同时禁止多个运行中的进程 系统进程不可以直接终止 只能通过系统自带的终止功能让用 户自己终止 不显示系统核心进程 5 流量管理 这个模块中主要读取系统文件 来对用户流量进行检测 主要显示的有 上传总流量 下载 总流量和共计流量使用情况 下面还是显示的是对应的应用的 logo 和应用名称 上传文件使用流量数和下载使用流量数 还有对应的该应用使用流量的总数目 6 病毒查杀 这个模块中使用的是腾讯的病毒数据库 来查对应的应用的 MD5 码看是不是在病毒数据库中 存在 在界面上显示的是 已扫描软件的个数 发现病毒的个数 下面就是对应的扫描的软件的 名称若不在病毒数据库就显示扫描安全 否则就会显示病毒存在 7 缓存清理 这个模块中我是将用户在本地的缓存文件清除在界面上显示的是 要清除缓存的软件的个数 共占内存有多少 在屏幕的最下方的位置我放了一个按钮 可以一次全清除 8 高级工具 电话归属地查询 使用了正则表达式来判断电话号码的合法性 根据用户输入的电话号码来 进行对号码的识别和归属地的查询 常用号码 这儿主要是可以存储一些比较常用的电话号码 比如订餐 家人 学校等特殊的号码 可以随时提取拨打 程序加密 可以对用户已经安装的程 序执行加密操作 让用户在打开该程序时需要输入相应的密码才可以进入程序 相当于给程序外 加一层安全防护 9 设置 主要模块有 自动更新设置 电话归属地显示设置 归属地提示框的风格设置 归属地显示 提示框位置设置 黑名单设置 程序加密设置 三 详细设计 经过系统的分析 该软件总体上是有一个主界面和主界面上的一些模块组成 在主界面上包 7 含手机防盗 骚扰拦截 软件管理 进程管理 流量管理 病毒查杀 清理缓存 高级工具以及 设置等九个模块 该软件可以对手机中的所有软件进行基本的管理 满足用户安全性和使用性的 要求 1 软件升级界面 当打开软件时会自动检测更新 流程图如 3 1 所示 图 3 1 升级界面流程图 2 手机防盗 手机防盗模块通过预设密码判断手机是否被盗 如果发生手机被盗事件 手机将自动通过自定义协议 8 发送手机中 SIM 卡信息和手机的位置信息给安全号码 如图 3 2 所示 图 3 2 防盗流程图 9 3 远程指令控制流程 手机防盗的核心是通过建立 Android 下的 super 管理员功能 能远程通过短信指令 对手机设置锁屏 密码 远程锁定手机屏幕 远程格式化手机内存卡 恢复出厂设置 而且用户也不能卸载软件 能极 大的保护用户的隐私安全 如发生手机被盗事件 super 管理员通过安全手机发送预设指令控制被绑定 的手机 从而锁定手机或者销毁数据 短信指令控制 流程图如 3 3 所示 创建广播 重写 onReceiver wipedata 判断手机防盗是否开启 获取所有短信内容 localtion 获取地址发送给安全 号码 获取最后 GPS 信息发送 给安全号码 让手机播放报警信号 清除手机数据 getgps alarm 图 3 3 远程控制指令流程图 10 4 手机杀毒 手机杀毒的实现需要先用 PackageManager 遍历手机上的所有程序 将扫描到的包名以及数字签名鱼 数据库中的病毒对比 发现相同的就视为病毒 弹出删除病毒的界面将其杀死 完成后 返回手机杀 毒的界面 手机杀毒流程图如图 3 4 所示 图 3 4 手机杀毒流程图 11 四 数据库设计 1 数据信息要求 主要黑名单信息 号码归属地信息 常用号码信息 程序锁信息 手机病毒信息 等数据信息 2 数据信息处理要求 系统主要完成黑名单信息 号码归属地信息 常用号码信息 程序锁信息 手机病毒信息等信息的添加 删除 修改 查看功能 系统中号码归属地信息和手机病毒信息使用频 率比较高 因此在处理方式上要求效率比较高 3 数据信息安全性与完整性要求 程序锁信息属于重要信息 因此要求保证数据信息安全 数据信 息不能外泄 1 概念设计 1 黑名单实体 E R 图 通过对系统需求分析抽象出黑名单 号码归属地 常用号码 程序锁 手机病毒等实体对象 相关 实体对象属性图如图 4 1 所示 图 4 1 黑名单实体属性图 2 号码归属地 号码归属地主要是对电话号码的信息进行查询操作 主要包括号码类型 号码归属城市和号码所属 城市的区号 如图 4 2 所示 图 4 2 号码归属地实体属性图 12 3 手机病毒数据实体类 手机病毒数据实体类主要是存储手机的 MD5 码 主要字段有 病毒描述 MD5 数字签名 病毒 ID 病毒类型和应用程序的包名如图 4 3 所示 图 4 3 手机病毒实体属性图 2 逻辑设计 1 blacknumber 黑名单表 黑名单表主要用来将用户不愿意接听的电话和短信进行拦截 该表的主要字段及其含义如图 4 4 所 示 图 4 4 黑名单信息表 2 address db 电话归属地表 电话归属地表主要用来用户查看来电信息的归属地和查看特定号码的归属地 该表的主要字段及其 含义如图 4 5 所示 图 4 5 号码归属地信息表 address db 13 3 applock 程序锁表 程序锁的数据信息表主要用来保存用户将设置的密码添加了程序锁之后进入应用会读取程序锁表中 的数据 该表的主要字段及其含义如图 4 6 所示 图 4 6 程序锁的信息表 applock 4 antivirus 手机病毒数据信息表 手机病毒数据信息表主要用来保存用户的手机应用数据和病毒数据库做比对从而进行病毒的查杀 该表的主要字段及其含义如表 4 7 所示 图 4 7 手机病毒数据信息表 14 五 界面设计 1 主界面设计 主界面为用户经常操作的界面 而且手机卫士的所有的功能都在主界面里展示 在这个界面 用户可以清理手机缓存 设置手机防盗 管理手机的软件和进程等 其设计过程是界面最上端放置的是一个 View 控件 放置 LOGO 其下方放置是一个自定义 的 FocusedTextView 类 让其继承 TextView 重写 isFocused 的方法 return true 这样就骗过了 系统 让系统误以为 FocusedTextView 获取到焦点 这样就能产生一个跑马灯的效果展现到界面 上 其下方的模块就是一个设置 numColumns 为 3 的 GridView 显示出来的 主界面展示如图 5 1 所示 图 5 1 主界面 15 2 防盗功能界面设计 手机防盗也是手机卫士最为核心的功能模块 其主要是保护用户的隐私不被泄露 设置初试 密码后可开启防盗功能 手机丢失时 手机接收到 SIM 卡更换的信息会向事先设置的安全号码 发送报警短信 用户通过远程发送设定的指令可遥控手机销毁数据 保护隐私 1 设置密码与输入密码设计 开启手机防盗功能第一步 要先设置安全密码 这个对话框设计是定义一个竖直对齐的线性 布局 LinearLayout 上面定义一个文本内容为设置密码 TextView 控件 下方设置两个输入类型 为 textPassword 的 EditText 用来输入密码和重复密码 而在下方再放置一个水平对齐的线性布 局 添加两个权重相同的 Button 按钮 其显示效果如图 5 2 所示 图 5 2 手机防盗 设置密码界面 完成密码设置后 再进入手机防盗功能时 会跳转进入到一个用户输入密码的界面 其页面 布局和设置密码的页面布局一样 显示效果如图 5 3 所示 图 5 3 手机防盗 输入密码界面 2 设置向导的详细设计设计 设置向导分四步完成设置手机的防盗功能 其具体的设计如下面四步所示 16 图 5 4 手机防盗设置向导一 图 5 5 手机防盗设置向导二 图 5 6 防盗设置向导三图 图 5 7 防盗设置向导四 图 5 8 防盗设置完成界面 3 骚扰拦截界面设计 通讯卫士可以让用户添加黑名单 在界面上有个添加按钮 点击添加后 在弹出的对话框里 输入要加入黑名单的号码 并选择拦截模式 拦截模式有全部拦截 电话拦截 短信拦截三种模 17 式 点击确定 就可以添加成功 添加的数据存储到数据库里 并在通讯卫士界面显示出来 其 界面展示如图 5 9 图 5 10 所示 图 5 9 骚扰拦截主界面图 5 10 骚扰拦截添加界面 4 程序管理界面设计 程序管理这个模块通过 Listview 把手机里面的应用程序给展示到界面上 在界面的上访放置 两个 Textview 用来显示用户手机内存 rom 可用的大小和 SD 卡可用内存的大小 下面是一个 Listview 通过遍历把应用程序显示到界面上 然后给你每一个 Listview 条目都注册了点击事件 18 在点击每一个条目时 可用 Popupwindow 方法弹出一个悬浮窗体 上面包含卸载 启动 分享 三个点击事件 在点击这些小按钮的时候 可启动其对应的 activity 方便于用户的操作 其界 面展示如图 5 11 所示 图 5 11 程序管理界面 5 进程管理界面设计 进程管理界面的 UI 和软件管理界面的 UI 大致类似 其顶部显示的内容也是通过 Textview 显示出来的 通过 ActivityManager 拿到手机正在运行的进程数量和可用内存 ram 的大小 再 设置显示到界面上 Textview 下的布局是一个 Listview 显示进程的界面是通过创建一个 LinearLayout 节点的布局文件 里面放置一个 Imageview 和 Textview 右边再放置一个 checkbox 来选择要清理的进程 通过 View inflate 方法把 xml 布局文件填充成一个 view 对象 显示到界面上 其主要界面展示如图 5 12 所示 19 图 5 12 进程管理界面 6 流量管理界面设计 流量统计界面的 UI 和软件管理界面的 UI 大致类似 其顶部显示的内容也是通过 Textview 显示出来的 通过 ActivityManager 拿到手机正在运行的进程数量和可用内存 ram 的大小 再 设置显示到界面上 其主要界面展示如图 5 13 所示 20 图 5 13 流量管理界面 7 清理缓存界面设计 缓存清理界面的 UI 和软件管理界面的 UI 大致类似 其顶部显示的内容也是通过 Textview 显示出 来的 通过 ActivityManager 拿到手机正在运行的进程数量和可用内存 ram 的大小 再设置显示到 界面上 其主要界面展示如图 5 14 所示 21 图 5 14 清理缓存界面 8 病毒查杀界面设计 与清理缓存界面类似 此处使用一个 listView 控件显示搜索的列表 同时用一个 Button 按钮一键 清理功能 22 图 5 15 病毒查杀界面 9 高级功能界面设计 此处包含了软件中的其它功能 有归属地 常用号码 程序加密功能 使用了一个 ListView 控件显示 通过触摸不同的位置即可打开相应的功能 如图 5 16 所示 23 图 5 16 高级功能界面 10 设置功能界面设计 缓存清理界面的 UI 和软件管理界面的 UI 大致类似 其顶部显示的内容也是通过 Textview 显示出 来的 通过 ActivityManager 拿到手机正在运行的进程数量和可用内存 ram 的大小 再设置显示到 界面上 其主要界面展示如图 5 17 所示 24 图 5 17 设置界面 六 调试与测试 1 在程序运行后 发现有些权限并不能得到 25 解决方案 经过资料翻阅 发现现在的安卓系统版本升级后 到了 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 26 permission android permission RECEIVE SMS permission android permission SEND SMS permission android permission READ CELL BROADCAST 这些权限需要在程序运行过程中动态申请 否则将无法使用相应的功能 详解见 27 七 心得体会 Android 是一种基于 Linux 的自由及开放源代码的操作系统 主要使用于移动设备 如智能手机和 平板电脑 由 Google 公司和开放手机联盟领导及开发 该平台由操作系统 中间件和应用软件组成 是第一个可以完全定制 免费 开放的手机平台 Android 是一个免费的手机平台 资料来源 百资料来源 百 度百科度百科 此次通过做 Android 手机卫士的开发实验项目 自己做交互式界面 服务器搭建 数据库设置 完成 App 主要逻辑 修改自定义对话框 优化界面 获取手机联系人 设置加密等内容 加深了对上 课所学知识的理解 完成这个项目之后 以前觉得复杂的布局文件 现在变得简单易懂 从之前面对 一个项目的无从下手 到现在一步步的分析项目 实践检验问题 在做项目过程中 尽管遇到了很多 问题 但是通过同学们和自己查询的一些资料 一点点理清程序逻辑代码 修正错误 提高了自己对 编程的兴趣 同时也加深了对所学知识的理解 八 程序清单 以下是部分程序源码 以下是部分程序源码 1 main xml 28 主界面设计源码主界面设计源码 主界面逻辑设计源码主界面逻辑设计源码 29 package com guoshisp mobilesafe import android app Activity import android content Intent import android os Bundle import android view View import android widget AdapterView import android widget AdapterView OnItemClickListener import android widget GridView import com guoshisp mobilesafe adapter MainAdapter import android view public class MainActivity extends Activity 显示主界面中的九大模块的 GridView private GridView gv main Override protected void onCreate Bundle savedInstanceState 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 new MainAdapter this 为 GridView 对象中的 item 设置点击时的监听事件 gv main setOnItemClickListener new OnItemClickListener 参数一 item 的父控件 也就是 GridView 参数二 当前点击的 item 参数三 当前点击的 item 在 GridView 中的位置 参数四 id 的值为点击了 GridView 的哪一项对应的数值 点击了 GridView 第 9 项 那 id 就等于 8 public void onItemClick AdapterView parent View view int position long id 30 switch position case 0 手机防盗 跳转到 手机防盗 对应的 Activity 界面 Intent lostprotectedIntent new Intent MainActivity this LostProtectedActivity class startActivity lostprotectedIntent break case 1 骚扰拦截 Intent callSmsIntent new Intent MainActivity this CallSmsSafeActivity class startActivity callSmsIntent break case 2 程序管理 Intent appManagerIntent new Intent MainActivity this AppManagerActivity class startActivity appManagerIntent case 3 进程管理 Intent taskManagerIntent new Intent MainActivity this TaskManagerActivity class startActivity taskManagerIntent break case 4 流量统计 Intent trafficInfoIntent new Intent MainActivity this TrafficInfoActivity class startActivity trafficInfoIntent break case 5 病毒查杀 Intent antiVirusIntent new Intent MainActivity this AntiVirusActivity class startActivity antiVirusIntent break case 6 清理缓存 Intent cleanCacheIntent new Intent MainActivity this CleanCacheActivity class startActivity cleanCacheIntent break case 7 高级工具 Intent atoolsIntent new Intent MainActivity this AtoolsActivity class startActivity atoolsIntent break 31 case 8 设置 跳转到 设置 对应的 Activity 界面 Intent settingIntent new Intent MainActivity this SettingCenterActivity class startActivity settingIntent break 2 activity splash xml 启动界面设计源码启动界面设计源码 32 启动界面逻辑设计源码启动界面逻辑设计源码 package com guoshisp mobilesafe import java io File import java io IOException import java io InputStream import HttpURLConnection import MalformedURLException import ProtocolException import URL import org xmlpull v1 XmlPullParserException import android app Activity import android app AlertDialog import android app AlertDialog Builder import android app ProgressDialog import android content DialogInterface import android content DialogInterface OnClickListener import android content Intent import android content SharedPreferences import android content pm PackageInfo import android content pm PackageManager import Uri import android os Bundle import android os Environment import android os Handler 33 import android os Message import android util Log import android view Window import android view WindowManager import android view animation AlphaAnimation import android widget RelativeLayout import android widget TextView import android widget Toast import com guoshisp mobilesafe domain UpdateInfo import com guoshisp mobilesafe engine UpdateInfoParser import com guoshisp mobilesafe utils AssetCopyUtil import com guoshisp mobilesafe utils DownLoadUtil public class SplashActivity extends Activity private TextView tv splash version private UpdateInfo info private static final int GET INFO SUCCESS 10 private static final int SERVER ERROR 11 private static final int SERVER URL ERROR 12 private static final int PROTOCOL ERROR 13 private static final int IO ERROR 14 private static final int XML PARSE ERROR 15 private static final int DOWNLOAD SUCCESS 16 private static final int DOWNLOAD ERROR 17 protected static final String TAG SplashActivity private long startTime private RelativeLayout rl splash private long endTime private ProgressDialog pd private Handler handler new Handler public void handleMessage android os Message msg 34 switch msg what case XML PARSE ERROR Toast makeText getApplicationContext xml 解析错误 1 show loadMainUI break case IO ERROR Toast makeText getApplicationContext I O 错误 1 show loadMainUI break case PROTOCOL ERROR Toast makeText getApplicationContext 协议不支持 1 show loadMainUI break case SERVER URL ERROR Toast makeText getApplicationContext 服务器路径不正确 1 show loadMainUI break case SERVER ERROR Toast makeText getApplicationContext 服务器内部异常 1 show loadMainUI break case GET INFO SUCCESS String serverversion info getVersion String currentversion getVersion if currentversion equals serverversion Log i TAG 版本号相同进入主界面 loadMainUI else Log i TAG 版本号不相同 升级对话框 showUpdateDialog break 35 case DOWNLOAD SUCCESS Log i TAG 文件下载成功 File file File msg obj installApk file break case DOWNLOAD ERROR Toast makeText getApplicationContext 下载数据异常 1 show loadMainUI break 加载主界面 private void loadMainUI Intent intent new Intent this MainActivity class startActivity intent finish 把当前的 Activity 从任务栈里面移除 安装一个 apk 文件 param file 要安装的完整文件名 protected void installApk File file 隐式意图 Intent intent new Intent intent setAction android intent action VIEW 设置意图的动作 intent addCategory android intent category DEFAULT 为意图添加额外的数据 36 intent setType application vnd android package archive intent setData Uri fromFile file intent setDataAndType Uri fromFile file application vnd android package archive 设置意图的数据与类型 startActivity intent 激活该意图 显示升级提示的对话框 protected void showUpdateDialog 创建了对话框的构造器 AlertDialog Builder builder new Builder this 设置对话框的提示内容 builder setIcon getResources getDrawable R drawable notification 设置升级标题 builder setTitle 升级提示 设置升级提示内容 builder setMessage info getDescription 创建下载进度条 pd new ProgressDialog SplashActivity this 设置进度条在显示时的提示消息 pd setMessage 正在下载 指定显示下载进度条为水平形状 pd setProgressStyle ProgressDialog STYLE HORIZONTAL 设置升级按钮 builder setPositiveButton 升级 new OnClickListener public void onClick DialogInterface dialog int which Log i TAG 升级 下载 info getApkurl 判断 Sdcard 是否可用 if Environment MEDIA MOUNTED equals Environment getExternalStorageState 37 pd show 显示下载进度条 开启子线程下载 apk new Thread public void run 获取服务端新版本 apk 的下载地址 String path info getApkurl 获取最新 apk 的文件名 String filename DownLoadUtil getFilename path 在 Sdcard 的根目录上创建一个文件 第一个参数是用于获取 Sdcard 的 根目录 第二个参数是在 Sdcard 的根目录上创建的文件的文件名 File file new File Environment getExternalStorageDirectory filename 得到下载后的 apk 的完整名称 file DownLoadUtil getFile path file getAbsolutePath pd if file null 向主线程发送消息下载成功的消息 Message msg Message obtain msg what DOWNLOAD SUCCESS msg obj file handler sendMessage msg else 向主线程发送消息下载失败的消息 Message msg Message obtain msg what DOWNLOAD ERROR handler sendMessage msg pd dismiss 下载结束后 将下载的进度条关闭掉 start else Toast makeText getApplicationContext sd 卡不可用 1 show 38 loadMainUI 进入程序主界面 builder setNegativeButton 取消 new OnClickListener public void onClick DialogInterface dialog int which loadMainUI builder create show Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceState 设置为无标题栏 requestWindowFeature Window FEATURE NO TITLE 设置为全屏模式 getWindow setFlags WindowManager LayoutParams FLAG FULLSCREEN WindowManager LayoutParams FLAG FULLSCREEN setContentView R layout activity splash rl splash RelativeLayout findViewById R id rl splash tv splash version TextView findViewById R id tv splash version tv splash version setText 版本号 getVersion AlphaAnimation aa new AlphaAnimation 0 3f 1 0f aa setDuration 2000 rl splash startAnimation aa 1 连接服务器获取服务器上的配置信息 new Thread new CheckVersionTask 39 start 拷贝病毒库的数据库文件 new Thread public void run File file new File getFilesDir antivirus db if file exists start 连网检查应用的版本号与服务端上的版本号是否相同 author Administrator private class CheckVersionTask implements Runnable public void run 获取 Sdcard 下的 config xml 文件 如果该文件不存在 那么将会自动创建该文件 SharedPreferences sp getSharedPreferences config MODE PRIVATE 由 sp 对象来获取 autoupdate 所对应的 boolean 值 如果该键不存在 默认返回 true boolean autoupdate sp getBoolean autoupdate true 自动更新没有开启 if autoupdate try 睡眠 2 秒钟的是为了播放动画 40 Thread sleep 2000 catch InterruptedException e TODO Auto generated catch block e printStackTrace 睡眠 2 秒钟播放动画完毕后进入程序主界面 loadMainUI startTime System currentTimeMillis Message msg Message obtain try 获取服务端的配置信息的连接地址 String serverurl getResources getString R string serverurl URL url new URL serverurl HttpURLConnection conn HttpURLConnection url openConnection conn setRequestMethod GET 设置请求方式 conn setConnectTimeout 5000 int code conn getResponseCode 获取响应码 if code 200 响应码为 200 时 表示与服务端连接成功 InputStream is conn getInputStream info UpdateInfoParser getUpdateInfo is endTime System currentTimeMillis long resulttime endTime startTime if resulttime 2000 try Thread sleep 2000 resulttime catch InterruptedException e e printStackTrace msg what GET INFO SUCCESS 41 handler sendMessage msg else 服务器状态错误 msg what SERVER ERROR handler sendMessage msg endTime System currentTimeMillis long resulttime endTime startTime if resulttime 2000 try Thread sleep 2000 resulttime catch InterruptedException e e printStackTrace catch MalformedURLException e e printStackTrace msg what SERVER URL ERROR handler sendMessage msg catch ProtocolException e msg what PROTOCOL ERROR handler sendMessage msg e printStackTrace catch IOException e msg what IO ERROR handler sendMessage msg e printStackTrace catch XmlPullParserException e msg what XML PARSE ERROR handler sendMessage msg e printStackTrace 42 获取当前应用程序的版本号 版本号存在于我们的 APK 中对应的清单文件中 直接解压 APK 后 即可看到对应的清单文件 版本号是 manifest 节点中的 android versionName 1 0 当一个应用程序被装到手机后 该 apk 拷贝到手机的 data app 目录下 也就是系统中 如图 6 所以想得到版本号 我们需要 拿到与系统相关的服务 就可以得到 apk 中的信息了 return private String getVersion 得到系统的包管理器 已经得到了 apk 的面向对象的包装 PackageManager pm this getPackageManager try 参数一 当前应用程序的包名 参数二 可选的附加消息 这里我们用不到 可以定义为 0 PackageInfo info pm getPackageInfo getPackageName 0 返回当前应用程序的版本号 return info versionName catch Exception e 包名未找到的异常 理论上 该异常不可能会发生 e printS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论