分享好友 最新资讯首页 最新资讯分类 切换频道
Android开发实战《手机安全卫士》——12.“手机杀毒”模块实现 & 病毒数据库手机qq病毒「Android开发实战《手机安全卫士》——12.“手机杀毒”模块实现 & 病毒数据库」
2025-02-14 09:19

之前我们完善了“高级工具”模块中第四个功能——程序锁的布局和功能实现,这一节中我们将完善更多细节,包括条目在操作时的初始化动画事件监听和点击锁集合后数据库修改等操作。

该功能需要解决以下问题

  1. 任务栈的切换,需要设置为单例
  2. 过滤已经解锁的应用,需要发送广播传递信息
  3. 开启服务后,再去添加加锁应用,不能生效,需要使用内容观察者观察数据库变化,一旦数据库变化,则放置包名的集合需要重新获取数据
  4. 挂起输入密码界面的时候,不需要去显示手机卫士的图标
  5. 回退按钮的处理,在输入密码的界面中按下Back键需要返回到桌面。

修改AppLockActivity,完善相应逻辑,代码如下

 

锁定的应用在被打开时需要输入指定密码,如图中红框所示

在这里插入图片描述

为了让程序锁在应用退出时依旧生效,需要将该功能维护到组件中,应按照以下步骤实现

  1. 判断当前开启的应用(现在手机所处的任务栈
  2. 如果开启的应用在已加锁的列表中,就需要弹出拦截界面
  3. 看门狗服务,需要一直(死循环)对开启的应用做监听

首先修改activity_setting.xml,添加自定义条目,作为是否开启程序锁设置项的布局,代码如下

 

接着,修改SettingActivity,添加initAppLock(),作为初始化程序锁的方法,代码如下

 

在service包下新增WatchDogService,作为负责程序锁的服务,需要去创建一个广播接受者过滤掉已经通过程序锁的应用,否则会一直循环,代码如下

 

在activity包下新建名为EnterPsdActivity的Activity,作为程序锁功能中拦截Activity使用的活动,首先修改其布局文件activity_enter_psd.xml,代码如下

 

修改EnterPsdActivity,完善锁定应用时的跳转逻辑,由于涉及到任务栈之间的切换,需要在清单文件中设定EnterPsdActivity的启动模式为单例模式,代码如下

 

由于涉及到获取任务栈的操作,需要在清单文件中声明对应权限,代码如下

 

修改AppLockDao,在插入数据insert()和删除数据delete操作中添加内容解析器,以此让看门狗服务进行判断是否需要重新获取数据,代码如下

 

修改WatchDogService,通过内容解析者去获取信息,判断存储应用信息的数据库是否发生变动,代码如下

 

为了在弹出输入程序锁密码界面时,按下HOME键后不会显示手机卫士的Activity,需要在清单文件中对EnterPsdActivity的特殊属性进行声明,让其不去显示手机卫士的图标,代码如下

 

为了在弹出输入程序锁密码界面时,按下Back键后不会退出该界面而直接进入该应用,则需要重写按下Back键的点击事件,修改EnterPsdActivity,重写方法,代码如下

 
 

前面我们完成了“高级工具”模块的实现,接下来需要去实现“手机杀毒”的模块功能,进入该模块后,会出现扫描应用的界面,如图所示

在这里插入图片描述

当应用扫描完毕后,会弹出疑似病毒应用的卸载窗口,如图所示

在这里插入图片描述

扫描列表可以使用布局来实现,由于每次扫描都会添加扫描的应用信息,即添加一项,为了不让在显示时相互遮挡,在每一次添加时都给它设定为最开始的坐标;另外,由于应用比较多,考虑到扫描应用时可能显示不全,还需要使用来实现竖直方向的拖拽,如图所示

在这里插入图片描述

修改HomeActivity,修改initData(),添加跳转到“手机杀毒”模块的界面逻辑,代码如下

 

在activity包下新建AnitVirusActivity,作为“手机杀毒”模块的页面,首先修改其布局文件activity_anit_virus.xml,按照之前的思路进行完善,代码如下

 

注意,由于进度条使用自定义样式,为了维护其样式需要填充三张图片,在res/drawable下新建一个名为progress_bg.xml的文件,代码如下

 
 

上一小节中,我们完成了“手机杀毒”模块的布局实现,现在需要完善病毒数据库的查询过程。判断一个应用是否为病毒,只需要从数据库从提取信息并进行字段(MD5码)比对即可确认。

修改SplashActivity,修改initDB()方法,在其中使用initAddressDB()方法,准备病毒数据库的信息录入,以此为查询过程做准备,代码如下

 

在dao下新建VirusDao,作为操作数据库中数据表里数据的工具类,增加常用方法,代码如下

 
 

在进行数据操作前,我们先来完善该模块下界面的一些动画逻辑 。

修改AnitVirusActivity,完善旋转动画的逻辑,代码如下

 
 

修改AnitVirusActivity,添加checkVirus(),用于遍历所有应用然后判断应用是否为病毒,代码如下

 

在domain包下新建ScanInfo,作为记录扫描信息的实体类,代码如下

最新文章
换季旧衣不再闲置!可提现,不少浙江人心动了
四月以来浙江的天气逐渐升温虽说上周六多地出现狂风暴雨这一“小插曲”但周日的天气就马上回暖了趁着这股暖和劲儿不少人开始整理
手机拍摄MV技巧分享:从稳定性到后期制作的全攻略手机mv「手机拍摄MV技巧分享:从稳定性到后期制作的全攻略」
在这个移动互联网时代,手机已经成为我们生活中不可或缺的一部分。作为一名热爱拍摄的创作者,我发现手机拍摄MV(音乐视频)不仅
vivox60tPro+和vivox60pro区别-性价比分析-参数对比手机参数对比「vivox60tPro+和vivox60pro区别-性价比分析-参数对比」
今天小编为大家带来0tPro+和vivox60pro的对比,那么这两款的区别是什么?哪款手机更值得入手?这里小编为大家带来最新的测评,可
新品发售:ZTE 中兴 Axon 40 Ultra 5G智能手机 8GB+256GBzte手机「新品发售:ZTE 中兴 Axon 40 Ultra 5G智能手机 8GB+256GB」
ZTE 中兴 Axon 40 Ultra 5G智能手机此次共有水墨和敦煌两种配色,正面采用了一块6.8英寸AMOLED的无缺柔性全面屏,2480x1116
2023大人适合玩什么游戏 适合大人玩的高人气手游推荐成人手机游戏「2023大人适合玩什么游戏 适合大人玩的高人气手游推荐」
随着互联网技术的飞速发展,电子游戏已经成为一种非常普及的娱乐方式,不仅是年轻人,很多成年人也在享受游戏带来的乐趣。那么,
男子开启辅助驾驶双手玩手机:被交警拦下警告
快科技4月6日消息,当前春光正好,不少市民选择自驾出游感受自然,然而有些人会误将辅助驾驶当成自动驾驶使用。近日,南京交警查
突然甩出“王炸”!科技巨头vivo下场“搅局”全球MR赛道
平静全球VR/MR赛道因国产科技巨头vivo于近日亮相旗下MR头显而变得风起云涌。这也代表着此前盛传已久vivo进军MR头显领域得到了切
如何有效清理手机存储空间,提升使用体验?手机缓存怎么清理「如何有效清理手机存储空间,提升使用体验?」
怎么样清理手机 (How to Clean Up Your Phone)在现代生活中,手机已经成为我们日常生活中不可或缺的一部分。然而,随着使用时间
从缅北到综艺舞台,王星真的“自由”了吗?
文 | 安青编辑 | 9527喵咕君《无限超越班 第三季》开播,作为一档演技类的综艺节目,看点不过就是演员在舞台上的演技表现。爆火