Android7.1 做到完全的禁止apk卸载

本文介绍了一种在Android系统中实现应用不可卸载的方法,包括通过系统设置限制用户手动卸载、利用PackageInstaller服务密码验证和针对adb命令行的输入密码保护,确保即使通过非传统途径也无法轻易卸载apk。
摘要由CSDN通过智能技术生成

在android方案定制中,如果需求是apk不可卸载,那么你肯定会想到一种解决办法,就是把apk内置在系统中,再给个系统签名,就噢了.嗯这确实是一种简单易用的方案,这样内置的app安装在系统的system/app/目录下,拥有系统权限,即是系统应用了.无法卸载,(当然,有root权限进去目录删除除外)

但是,但是来了,我今天给你们介绍一种直接安装也能实现无法卸载的处理办法,请听我细细道来,我们都知道在安装中直接在文件管理器中点击apk包去安装或者用adb命令的方式去安装,都是可以的,apk的安装路径是在data/app/目录下,这时apk也就是可卸载的,

首先介绍方案一, 我们可以在系统设置的应用列表的应用详情里把卸载按钮置为不可点击,或者直接隐藏掉这个按钮,但是如果是可以拖动卸载的呢,比如Lunahcer3,那不是每个地方都得处理,这里我们可以做个一次性解决的办法.android系统有个负责安装和卸载apk的服务应用PackageInstaller,在这里面我们可以去在卸载的地方,弹出输入密码框来进行确认卸载,

在packages/apps/PackageInstaller/src/com/android/packageinstaller/UninstallAppProgress.java 文件是具体的实现卸载的,如图

 这样就实现了,卸载通用api卸载,设置里点击卸载输入密码的功能了,可是这时候有人会问了,如果使用的是adb命令来卸载呢,adb uninstall com.*; 是啊,往往总有人不按常理出牌,没事,这就要引入我们的第二种方式了.

方案二,终极杀人魔,哈哈哈哈哈

adb uninstall 方式卸载apk,看源码是在frameworks/base/cmds/pm/src/com/android/commands/pm/Pm.java 这里执行的具体卸载实现的,那么我们是不是也可以做下处理呢,命令行的处理,听着高大上把

 然后我们可以在这个命令里判断,输入密码的话就可以使用Scanner,标准的输入输出流,哈哈,这就可以随便你发挥了,这样就也就可以实现,adb卸载密码同样保护的作用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值