当前位置: 首页 > news >正文

自启动、关联启动的拦截规则

1. 自启动管控需求来源

自启动、关联启动、交叉启动、推送启动等现象的泛滥除了对个人信息保护带来隐患外,还会导致占用过多的系统CPU和内存资源,造成系统卡顿、发热、电池消耗过快;还可能引入一些包含“恶意代码”的进程在后台隐蔽启动,避开了杀毒软件等的查杀,威胁到用户通信秘密、财产安全。

2.自启动和管理启动的基础

App启动基础:Android 四大组件Activity\BroadCast\Service\ContentProvid是App启动的基本单元,大部分APP会直接或间接地依赖于这四种方式进行启动。

0

3.自启动和关联启动拦截规则

原理:应用主要是依赖四大组件启动,故在四大组件启动的通路新增插桩点,根据设定规则,进行组件式规则拦截,达到治理后台自启动和关联启动的现象。

3.1 通用拦截规则

1.如果是自启动和关联启动白名单应用或组件名,则不拦截启动

2.如果是前台桌面进程启动,即caller是前台可见进程或负一屏,则不拦截启动

3.如果是CTA、CTS、monkey或工程模式,则不拦截启动

4.如果caller是shell或root用户,则不拦截启动

5.如果一些自研应用或测试应用,则不拦截启动

6.如果是画中画、悬浮窗等启动,则不拦截启动

7.如果是widget启动,则不拦截启动

8.如果被调用者是系统应用或正在运行,则允许启动

9.如果调用者和被调用者是同一个应用,则允许启动。

10.如果调用者是系统应用,则允许启动

11.如果调用者是非系统应用,且被调用者是同步或闹钟操作,则禁止启动。

12.如果被调用者被限制在后台运行,则禁止启动

3.2 Activity启动拦截规则

1.如果调用者是系统应用或系统签名,则不拦截启动

2.如果被调用者是系统,则不拦截启动

3.如果是1个像素点或透明activity,则不拦截启动

4.如果 Intent 来自系统通知(from_systemUi),则允许启动。

5.如果调用者没有前台活动(callerVisible 为 false),则禁止启动。

6.如果调用者有前台活动,则允许启动。

3.3 Service启动拦截规则

(1) 窗口策略检测

如果被调用者与窗口相关(如 WindowAlarm),则允许启动。

拦截原因设置为 REASON_WINDOW。

(2) 通知检测

如果 Intent 来自系统通知(from_systemUi),则允许启动。

拦截原因设置为 REASON_NOTIFICATION。

(3) 被调用者检测

系统应用检测:

如果被调用者是系统应用,则允许启动。

拦截原因设置为 REASON_CALLED_SYSTEM。

前台运行检测:

如果被调用者正在前台运行(calledVisible 为 true),则允许启动。

拦截原因设置为 REASON_CALLED_FG。

活跃状态检测:

如果被调用者处于活跃状态(getAppActiveState 为 true),则允许启动。

拦截原因设置为 REASON_ACTIVE。

WebView 检测:

如果被调用者的类名包含 WEBVIEW_CLASSNAME_KEY(如 "sandbox"),则允许启动。

拦截原因设置为 REASON_WEB。

自启动检测:

如果调用者和被调用者是同一个应用,则允许启动。

拦截原因设置为 REASON_CALLER_SAME_CALLED。

如果被调用者处于空闲或冻结状态(getAppFreezeOrIdleState 为 true),并且被调用者在黑名单中(checkIsRestriced 为 true),则禁止启动。

拦截原因设置为 REASON_THIRDAPP_BLACK。

(4) 系统应用检测

调用者是系统应用:

如果调用者是系统应用,则允许启动。

拦截原因设置为 REASON_CALLER_SYSTEM。

非系统应用检测:

如果调用者是非系统应用,且被调用者是同步或闹钟操作,则禁止启动。

拦截原因设置为 REASON_JOB_SYNC_FORBIDDEN 或 REASON_ALARM_FORBIDDEN。

(5) 后台运行检测

如果被调用者被限制在后台运行(checkCanRunningBG 为 true),则禁止启动。

拦截原因设置为 REASON_USER_SET_BACKGROUND_RESTRICTED。

3.4 Broadcast启动拦截规则

(1) 窗口策略检测

如果被调用者与窗口相关(如 WindowAlarm),则允许启动。

拦截原因设置为 REASON_WINDOW。

(2) 通知检测

如果 Intent 来自系统通知(from_systemUi),则允许启动。

拦截原因设置为 REASON_NOTIFICATION。

(3) 被调用者检测

系统应用检测:

如果被调用者是系统应用,则允许启动。

拦截原因设置为 REASON_CALLED_SYSTEM。

前台运行检测:

如果被调用者正在前台运行(calledVisible 为 true),则允许启动。

拦截原因设置为 REASON_CALLED_FG。

活跃状态检测:

如果被调用者处于活跃状态(getAppActiveState 为 true),则允许启动。

拦截原因设置为 REASON_ACTIVE。

自启动检测:

如果调用者和被调用者是同一个应用,则允许启动。

拦截原因设置为 REASON_CALLER_SAME_CALLED。

如果被调用者处于空闲或冻结状态(getAppFreezeOrIdleState 为 true),并且被调用者在黑名单中(checkIsRestriced 为 true),则禁止启动。

拦截原因设置为 REASON_THIRDAPP_BLACK。

(4) 白名单检测

如果 Intent 的 Action 在白名单中(mActionWhiteList),则允许启动。

拦截原因设置为 REASON_ACTION_WHITE。

(5) 系统应用检测

调用者是系统应用:

如果调用者是系统应用,则允许启动。

拦截原因设置为 REASON_CALLER_SYSTEM。

非系统应用检测:

如果调用者是非系统应用,且被调用者未运行,则禁止接收系统广播。

拦截原因设置为 REASON_THIRDAPP_NOTRUNNING_CANT_RECIEVING_SYSTEM_BROADCAST。

(6) 后台运行检测

如果被调用者被限制在后台运行(checkCanRunningBG 为 true),则禁止启动。

拦截原因设置为 REASON_USER_SET_BACKGROUND_RESTRICTED。

(7) 默认策略

如果以上所有检测都未返回明确结果(即结果为 DEFAULT),则默认允许启动。

拦截原因保持为 REASON_DEFAULT。

3.5 Provider启动拦截规则

无太多规则,主要是名单配置规则

相关文章:

  • 4g串口发短信踩坑
  • 【文件系统】
  • C语言for循环语句的用法(非常详细)
  • Ubuntu 源码安装 Qt5
  • 报错E0513:不能将 “const wchar_t *“ 类型的值分配到 “LPWSTR“ (aka “wchar_t *“) 类型的实体
  • 【性能测试入门_01性能测试jmeter基础实操场景详解】
  • # 如何确认elementary os (linux)使用的是Wayland而不是x11?
  • TCP连接过程图解
  • Android Compose是如何使用什么架构,多个Activity?还是Fragment?compose的ui又是如何卸载和挂载的呢?
  • 【day10】智慧导览:学习LBS定位精度标准
  • markdown转docx
  • Java基础关键_020_集合(四)
  • 电网电压暂态扰动机理与工业设备抗失压防护策略研究
  • 【SpringBoot】深入剖析 Spring Boot 自动装配原理(附源码与实战)
  • 内存检测工具——Qt Creator
  • git使用命令总结
  • python总结(3)
  • QT工程打开、编译、运行流程
  • Netty基础—2.网络编程基础三
  • Dify平台训练个人文档助手
  • 在笔墨金石间,看胡问遂与梅舒适的艺术对话
  • 一手实测深夜发布的世界首个设计Agent - Lovart。
  • 英媒:英国首相住所起火,目前无人伤亡
  • 央行等印发《关于金融支持广州南沙深化面向世界的粤港澳全面合作的意见》
  • 香港将展“天方奇毯”,从地毯珍品看伊斯兰艺术
  • 中国目的地·入境游简报006|外国网红游中国启示录