方案一

通过setComponentEnabledSetting方式,禁止掉应用的监听开机启动的广播组件。

代码如下:

getContext().getPackageManager().setComponentEnabledSetting(new ComponentName("包名", "组件名"),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);

缺点:

  1. 让组件不能再使用,除非设置成COMPONENT_ENABLED_STATE_ENABLED。
  2. 系统开关机仍然有效,但应用被卸载此属性会失效。

方案二

通过forceStopPackage方式,将应用stop掉。应用被stop后,stopped属性变为true,
如果应用没再被使用,开机启动时即使接收了开机广播应用也不会自启动。

代码如下:

private void setPackageForceStop(String pkg) {try {Method method = Class.forName("android.app.ActivityManager").getMethod("forceStopPackage", String.class);if (mActivityManager == null) {mActivityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);}method.invoke(mActivityManager, pkg);} catch (Exception e) {e.printStackTrace();}
}

缺点:

  • 如果该应用是系统应用,每次开机启动stopped属性会被置为false,即该应用能开机自启。
  • 同样的,如果该应用被卸载后重装也会导致stopped属性会被置为false,即该应用能开机自启。
  • 应用被stop后然后被使用,stopped属性会被置为false,即该应用能开机自启。

方案三

通过拦截应用的开机广播,不让应用接收到开机广播。
因开机广播是全局的、无序的广播,暂时没有办法做到拦截应用的开机广播
(系统端能做到,但这是应用层的业务,显然系统端不会做这样不合理的处理)。

方案四

通过禁止应用的开机广播权限,不让应用接收到开机广播。
此想法应该是,暂时没法拦截应用的开机广播,就想法禁止应用的开机广播权限。
总之,就是不想让应用接收到开机广播,但目前没有好的办法去禁止应用的开机广播权限。

总结

方案一和方案二是一般应用的实现方式,但两者都有一些小缺点,并且两者的实现都不能保证应用开机后不自启。
所以,无论采用方案一和方案二,目前能想到的最好方式还是,管理应用自启动的APK自己开机自启后,
stop掉被限制开机自启的应用,然后,如果此管理APK不必要,可以kill掉自己。

备注

  • 查看应用的stopped属性:dumpsys package com.tcl.tvweishi | grep stop
  • shell命令stop掉应用:am force-stop com.tcl.tvweishi

管理应用自启动的方案相关推荐

  1. Ubuntu管理开机自启动程序

    点击左侧的图标,在搜索栏上输入gnome-session,即可看到 "启动应用程序"的图标, 如下图: 在此管理开机自启动程序

  2. 敏捷管理之绩效考核方案

    前段时间,公司签了年终奖确认.觉得公司发放年终奖完全是凭主观发放,没有事实依据,由此产生了对如何发放年终奖的一些想法. 奖金发放作为激励员工最直接的手段,往往也是让管理人员最难抉择的,而且很多公司,都 ...

  3. 中后台管理信息系统通用原型方案、业务中台管理系统、业务中台架构、管理信息系统、订单管理、客户管理、货源管理、财务管理、客服管理、营销管理、办公申请、协作管理、CMS、OA、CRM、ERP、Axure

    本作品是一套通用型的中后台信息系统原型方案,可以快速扩展并输出标准美观的中后台产品原型,极大的提升输出效率和节省协作成本.方案中提供了几十套不同风格和结构的系统框架,并涵盖了大量的常用组件和通用页面模 ...

  4. 关于QQ号的分发管理机制的基本方案的设计猜想和分析讨论

    关于QQ号的分发管理机制的基本方案的设计猜想和分析讨论 众所周知,QQ号最开始是5位,后来逐渐变为11位,我开始用QQ的时候,一般都是申请到10位,有时候能申请到9位,据说还有传闻"同学的同 ...

  5. 安全生产管理云执法平台方案

    安全生产管理云执法平台方案 1.项目背景 随着社会经济的发展,全国各地的生产安全伤亡事故一直是高频率发生,如煤矿.危险化学品和烟花爆竹安全生产等等,如何高标准调度统计和安全生产行政执法分析工作;依法组 ...

  6. 单节磷酸铁锂电池充电管理芯片IC驱动方案3.6V充电芯片手电筒_低压应急球泡灯适用

    单节磷酸铁锂电池充电管理芯片IC驱动方案3.6V充电芯片手电筒_低压应急球泡灯适用 2:品牌名称:泛海微 3方案特点: 4.(1)产品特点 特点:   3.6V独立的单节磷酸铁锂电池充电管理    ...

  7. LInux系统两套管理网络连接的方案interfaces和Network-Manager

    一.Linux系统两套管理网络连接的方案,两套方案是冲突的,不能同时共存 1./etc/network/interfaces(/etc/init.d/networking) 2.Network-Man ...

  8. react中数据状态管理的四种方案

    我们为什么需要状态管理? (1) 一个是为了解决相邻组件的通信问题. 虽然可以通过「状态提升」解决,但有两个问题: 每次子组件更新,都会触发负责下发状态的父组件的整体更新(使用 Context 也有这 ...

  9. 计算机教学考核方案,教师计算机使用管理制度和考核方案学校教学管理制度

    <教师计算机使用管理制度和考核方案学校教学管理制度>由会员分享,可在线阅读,更多相关<教师计算机使用管理制度和考核方案学校教学管理制度(3页珍藏版)>请在人人文库网上搜索. 1 ...

最新文章

  1. IntelliJ IDEA 2021.3.2 发布:告别不断建议安装xx插件的提示!
  2. MySQL优化篇:执行计划explain中key_len计算方式
  3. 20145222黄亚奇《Java程序设计》第1周学习总结
  4. 课时 27:Kubernetes 安全之访问控制(匡大虎)
  5. Java递归实现二分法
  6. qt5.6.3版本移植arm
  7. ubuntu切换JDK版本
  8. 跟一个傻逼程序员合作是什么感受?
  9. 左手价格战右手结盟 巨头加码云计算市场洗牌在即
  10. 关于HttpUtility.UrlEncode,Server.UrlEncode
  11. 解决Intellij IDEA运行报Command line is too long的问题
  12. Android程序财务管理,基于android的个人财务管理系统的设计与实现..pdf
  13. 【MySQL】与【Oracle】
  14. Python 找回自家路由器密码
  15. 虽然没有见过凌晨四点的洛杉矶,但是我们见证了了凌晨灯火通明科技园:程序员的痛谁懂
  16. 使用粒子效果动画组成模型[自定义shader实现]
  17. PostgreSQL安装、验证安装、pgAdmin初步简单使用
  18. 2019年2月18日,异常作业
  19. 解决win2008 R2远程桌面授权过期的方法
  20. Servlet 容器和 Web 服务器的区别

热门文章

  1. Python九阴真经秘诀
  2. 鸿蒙大陆鸿蒙战凯,鸿蒙大陆7.1正式版
  3. Web 2.0的八个核心模式与成功技巧
  4. python 读取excel的所有sheet_names
  5. python计算卡路里_python matplotlib绘图大全(散点图、柱状图、饼图、极坐标图、热量图、三维图以及热图)...
  6. 矩阵 分配器 切换器 编码器 解码器 中控器
  7. CSS实现猎豹浏览器首页标签切换效果
  8. 攻防世界WEB进阶之upload1
  9. 记录如何将阿里云ECS主机以镜像方式迁移到线下机房vmware esxi主机
  10. classpath类路径是什么