管理应用自启动的方案
方案一
通过setComponentEnabledSetting方式,禁止掉应用的监听开机启动的广播组件。
代码如下:
getContext().getPackageManager().setComponentEnabledSetting(new ComponentName("包名", "组件名"),PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);
缺点:
- 让组件不能再使用,除非设置成COMPONENT_ENABLED_STATE_ENABLED。
- 系统开关机仍然有效,但应用被卸载此属性会失效。
方案二
通过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
管理应用自启动的方案相关推荐
- Ubuntu管理开机自启动程序
点击左侧的图标,在搜索栏上输入gnome-session,即可看到 "启动应用程序"的图标, 如下图: 在此管理开机自启动程序
- 敏捷管理之绩效考核方案
前段时间,公司签了年终奖确认.觉得公司发放年终奖完全是凭主观发放,没有事实依据,由此产生了对如何发放年终奖的一些想法. 奖金发放作为激励员工最直接的手段,往往也是让管理人员最难抉择的,而且很多公司,都 ...
- 中后台管理信息系统通用原型方案、业务中台管理系统、业务中台架构、管理信息系统、订单管理、客户管理、货源管理、财务管理、客服管理、营销管理、办公申请、协作管理、CMS、OA、CRM、ERP、Axure
本作品是一套通用型的中后台信息系统原型方案,可以快速扩展并输出标准美观的中后台产品原型,极大的提升输出效率和节省协作成本.方案中提供了几十套不同风格和结构的系统框架,并涵盖了大量的常用组件和通用页面模 ...
- 关于QQ号的分发管理机制的基本方案的设计猜想和分析讨论
关于QQ号的分发管理机制的基本方案的设计猜想和分析讨论 众所周知,QQ号最开始是5位,后来逐渐变为11位,我开始用QQ的时候,一般都是申请到10位,有时候能申请到9位,据说还有传闻"同学的同 ...
- 安全生产管理云执法平台方案
安全生产管理云执法平台方案 1.项目背景 随着社会经济的发展,全国各地的生产安全伤亡事故一直是高频率发生,如煤矿.危险化学品和烟花爆竹安全生产等等,如何高标准调度统计和安全生产行政执法分析工作;依法组 ...
- 单节磷酸铁锂电池充电管理芯片IC驱动方案3.6V充电芯片手电筒_低压应急球泡灯适用
单节磷酸铁锂电池充电管理芯片IC驱动方案3.6V充电芯片手电筒_低压应急球泡灯适用 2:品牌名称:泛海微 3方案特点: 4.(1)产品特点 特点: 3.6V独立的单节磷酸铁锂电池充电管理 ...
- LInux系统两套管理网络连接的方案interfaces和Network-Manager
一.Linux系统两套管理网络连接的方案,两套方案是冲突的,不能同时共存 1./etc/network/interfaces(/etc/init.d/networking) 2.Network-Man ...
- react中数据状态管理的四种方案
我们为什么需要状态管理? (1) 一个是为了解决相邻组件的通信问题. 虽然可以通过「状态提升」解决,但有两个问题: 每次子组件更新,都会触发负责下发状态的父组件的整体更新(使用 Context 也有这 ...
- 计算机教学考核方案,教师计算机使用管理制度和考核方案学校教学管理制度
<教师计算机使用管理制度和考核方案学校教学管理制度>由会员分享,可在线阅读,更多相关<教师计算机使用管理制度和考核方案学校教学管理制度(3页珍藏版)>请在人人文库网上搜索. 1 ...
最新文章
- IntelliJ IDEA 2021.3.2 发布:告别不断建议安装xx插件的提示!
- MySQL优化篇:执行计划explain中key_len计算方式
- 20145222黄亚奇《Java程序设计》第1周学习总结
- 课时 27:Kubernetes 安全之访问控制(匡大虎)
- Java递归实现二分法
- qt5.6.3版本移植arm
- ubuntu切换JDK版本
- 跟一个傻逼程序员合作是什么感受?
- 左手价格战右手结盟 巨头加码云计算市场洗牌在即
- 关于HttpUtility.UrlEncode,Server.UrlEncode
- 解决Intellij IDEA运行报Command line is too long的问题
- Android程序财务管理,基于android的个人财务管理系统的设计与实现..pdf
- 【MySQL】与【Oracle】
- Python 找回自家路由器密码
- 虽然没有见过凌晨四点的洛杉矶,但是我们见证了了凌晨灯火通明科技园:程序员的痛谁懂
- 使用粒子效果动画组成模型[自定义shader实现]
- PostgreSQL安装、验证安装、pgAdmin初步简单使用
- 2019年2月18日,异常作业
- 解决win2008 R2远程桌面授权过期的方法
- Servlet 容器和 Web 服务器的区别
热门文章
- Python九阴真经秘诀
- 鸿蒙大陆鸿蒙战凯,鸿蒙大陆7.1正式版
- Web 2.0的八个核心模式与成功技巧
- python 读取excel的所有sheet_names
- python计算卡路里_python matplotlib绘图大全(散点图、柱状图、饼图、极坐标图、热量图、三维图以及热图)...
- 矩阵 分配器 切换器 编码器 解码器 中控器
- CSS实现猎豹浏览器首页标签切换效果
- 攻防世界WEB进阶之upload1
- 记录如何将阿里云ECS主机以镜像方式迁移到线下机房vmware esxi主机
- classpath类路径是什么