Android应用保活方案的另类出路,让你应用长生不老,实战案例
我们在来看一下那个判断,可以看到在之前的分类中如果强杀列表为空,或者是系统应用,或者是应用开启了自启动权限就不会强杀了,通过后面的一个判断的方法名我们可以猜测这个是自启动权限功能,可以去系统代码查看,这时候就需要去**/system/framework/framework.jar** 中查找系统类了:
这里我们把系统类的framework.jar 弄出来解压出dex直接打开即可:
看到这里是调用系统的APP_OPS 服务,所以我们去我们的项目中用反射的方式调用这个方法:
然后运行项目,报了权限错误:
我们在AndroidManifest.xml 中添加这个权限即可,然后运行可惜没什么效果。所以就换个思路,既然要开启应用的自启动权限,对于小米手机我们知道在小米安全应用中管理的,我们同样去**/system/priv-app/** 这个目录下找到这个应用:
页面如下:
然后弄出来apk之后用Jadx打开apk查看,同时我们可以用adb shell dumpsys activity top 命令查看当前页面的activity信息:
然后去搜索这个类,直接看到那个开启的开关逻辑代码:
逐个排查找到这个类中:
继续往里面看:
这里看到了重要信息就是写入CP了,有了uri信息,看到这里写入三个字段信息,查看他的uri信息:
到这里就简单了,我们在应用中直接利用uri信息写入值,当然需要把我们的应用自启动开启:
然后运行看效果:
有报错信息,提示缺少权限我们添加即可,运行看看效果:
三、结果出乎意料
到这里我们就操作成功了,这里就结束了吗?
显然不是。因为这里有一个很大的问题,细心的同学发现了,如果这个真的不用root权限就这么简单的开启那小米系统也太不安全了吧,但是我手中的这台小米4的确是可以的,但是用了其他的小米手机发现确还是提示权限不足,其实用我们的脚指头想一想也是正常的,这里肯定有问题,如果这一点都可以做到的话,那么小米系统真的是太不安全了,那为什么我的手机可以呢?因为我的手机当时自己刷了网上第三方的小米ROM,这个ROM应该是被改过了,只要是有权限验证的地方都可以免root过掉。那么这里我就被我的手机耍了一次,而你们却被我耍了一次。
四、保活的另类出路
我们知道现在很多应用都想开启自启动权限,这样应用就可以长生不老了,不过通过这一次分析小米系统源码可以发现只要有了自启动权限之后应用首先是不会杀死,然后也可以重启,真的是完完全全的长生不老了,那么其实权限这个事情我们肯定是做不了了。
所以我们可以想其他的方案,比如我们可以引导用户去开启 ,这个就要看产品怎么去很好的引导用户了,比如有一个提示说:开启自启动可以更好的使用本应用此类消息。
这样有了自启动权限之后可以做很多事情了,但是不是所有的用户都愿意去开启的,那么我们怎么让我们的应用长生不老呢,难道真的没办法了吗?办法其实还是有的,我们可以通过上面分析系统源码的时候看到:
当我们点击系统菜单键出现系统多任务界面,然后点击清空内存,其实系统这时候会获取当前正在运行的程序,并且获取他们的页面截图用于展示,而对于正在当前运行的程序是不会强制杀死的,也就是TopActivity 的程序是不会杀死的。
那么我们是否可以利用这一点来做呢?首先我们可以监听系统的多任务菜单键,这个就是动态监听系统一个广播即可,然后我们监听到之后就立马启动我们自己的一个保活Activity这里就叫做一像素Activity ,但是这个Activity需要具备以下三点:
更多Android高级工程师进阶学习资料
进阶学习视频
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](
)**
里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
本文已被腾讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录,自学资源及系列文章持续更新中…
讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://ali1024.coding.net/public/P7/Android/git)收录,自学资源及系列文章持续更新中…**
Android应用保活方案的另类出路,让你应用长生不老,实战案例相关推荐
- 全面盘点当前Android后台保活方案的真实运行效果(截止2019年前)
全面盘点当前Android后台保活方案的真实运行效果(截止2019年前) 本文原作者"minminaya",作者网站:minminaya.cn,为了提升文章品质,即时通讯网对内容作 ...
- Android进程保活方案
自己曾经也在这个问题上伤过脑经,前几日刚好有一个北京的哥们在QQ说在做IM类的项目,问我进程保活如何处理比较恰当,决定去总结一下,网上搜索一下进程常驻的方案好多好多,但是很多的方案都是不靠谱的或者不是 ...
- Android 进程保活方案
前言 Android 系统为了保持系统运行流畅,在内存吃紧的情况下,会将一些进程给杀掉,以释放一部分内存.然而,对于一些(如:QQ.微信等)比较重要的.我们希望能及时收到消息的App,需要保持进程持续 ...
- 2018年Android的保活方案效果统计
一.常见保活方案 1.监听广播:监听全局的静态广播,比如时间更新的广播.开机广播.解锁屏.网络状态.解锁加锁亮屏暗屏(3.1版本),高版本需要应用开机后运行一次才能监听这些系统广播,目前此方案失效.可 ...
- Android的保活方案效果统计
点击上方的终端研发部,右上角选择"设为星标" 每日早9点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 一波Flutter酷炫 ...
- 2018年最新Android的保活方案及效果统计
热文导读 | 点击标题阅读 金九银十跳槽季如何进阶找到合适满意的工作? 要么干,要么辞职,千万别混 重磅:Android 技能图谱学习路线 作者:minminaya https://www.jians ...
- Android进程保活方案的几种方案
自己曾经也在这个问题上伤过脑经,前几日刚好有一个北京的哥们在QQ说在做IM类的项目,问我进程保活如何处理比较恰当,决定去总结一下,网上搜索一下进程常驻的方案好多好多,但是很多的方案都是不靠谱的或者不是 ...
- 盘点im即时通讯开发中Android后台保活方案
对于IM应用和消息推送服务的开发者来说,在Android机型上的后台保活是个相当头疼的问题. 老板一句:"为什么微信.QQ能收到消息,而你写的APP却不行?",直接让人崩溃,话说老 ...
- android 属性动画高级,Android高级UI开发(二十五)属性动画实战案例之流浪大师与乔帮主...
在上一篇文章里我们介绍了属性动画的基础知识,今天我们综合运用属性动画的知识来完成一个动画案例.首先,看一下这个动画效果: 1. 分析这个动画案例 第一个动画(浏览大师的动画)是:当点击顶部" ...
- Android进程保活(常驻内存)
Android将进程分为6个等级,它们按优先级顺序由高到低依次是: 1.前台进程( FOREGROUND_APP): 2.可视进程(VISIBLE_APP ): 3. 次要服务进程(SECOND ...
最新文章
- 一位 CEO 在战略沟通会上的员工问答实录
- String.valueOf()
- 用Java Servlets代替CGI
- Call for Papers | ACCV 2022在澳门等你
- leetcode力扣78. 子集
- bigdata是什么
- MySQL中快速复制数据表方法汇总
- 拓端tecdat|R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化
- How Google Tests Software (出书,停止更新)
- 分享一个Atmega128L单片机在IAR for AVR中的串口1收发数据的例程
- html制作公众号,自制微信公众号一键排版工具
- Web3 来临前的准备工作
- u盘量产linux pe,WinPE U盘量产ISO
- 有了这十五款编程游戏,谁都可以学编程!
- vue项目目录详细解读
- 什么是SSL安全证书?
- Unity Apple登录接入
- android延迟时间设置,控制Android上的延迟
- 论剑江湖服务器维护,《论剑:江湖》老玩家谈前期流程攻略
- Spring大白话(●—●)
热门文章
- IAR for MSP430 关于添加自定义头文件的两种方法【转】
- 《异度神剑2》与犹太教卡巴拉略考
- WINCE6.0+ILI9806E休眠唤醒显示异常问题
- 数字信号处理matlab——系统响应和系统稳定
- ubuntu darknet GPU版
- python @property的介绍与使用
- tomcat绕过同源策略(CORS)--亲测有效
- python里的PYTHONPATH是干什么用的?
- python vim 自动换行_Vim学习笔记整理
- CString,string,char*之间的转换