Android应用如何开机自启动、自启动失败原因
2019独角兽企业重金招聘Python工程师标准>>>
Android应用如何开机自启动、自启动失败原因
本文主要介绍Android应用如何开机自启动、自启动失败的原因、adb命令发送BOOT_COMPLETED。
1、Android应用如何开机自启动
(1)、在AndroidManifest.xml中注册
注意不仅要添加android.intent.action.BOOT_COMPLETED对应的action,还需要添加对应的uses-permission
(2)、Receiver接收广播进行处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class BootBroadcastReceiver extends BroadcastReceiver {
public static final String TAG = "BootBroadcastReceiver" ;
@Override
public void onReceive ( Context context , Intent intent ) {
String action = intent . getAction ( ) . toString ( ) ;
if ( action . equals ( Intent . ACTION_BOOT_COMPLETED ) ) {
// u can start your service here
Toast . makeText ( context , "boot completed action has got" , Toast . LENGTH_LONG ) . show ( ) ;
return ;
}
}
}
|
2、自启动失败的原因
接收不到BOOT_COMPLETED广播可能的原因
(1)、BOOT_COMPLETED对应的action和uses-permission没有一起添加
(2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的
(3)、系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播
(4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。
Android3.1之后,系统为了加强了安全性控制,应用程序安装后或是(设置)应用管理中被强制关闭后处于stopped状态,在这种状态下接收不到任何广播,除非广播带有FLAG_INCLUDE_STOPPED_PACKAGES标志,而默认所有系统广播都是FLAG_EXCLUDE_STOPPED_PACKAGES的,所以就没法通过系统广播自启动了。所以Android3.1之后
(1)、应用程序无法在安装后自己启动
(2)、没有ui的程序必须通过其他应用激活才能启动,如它的Activity、Service、Content Provider被其他应用调用。
存在一种例外,就是应用程序被adb push you.apk /system/app/下是会自动启动的,不处于stopped状态。具体说明见:
http://developer.android.com/about/versions/android-3.1.html#launchcontrols
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html
3、adb发送BOOT_COMPLETED
我们可以通过
1
|
adb shell am broadcast - a android . intent . action . BOOT_COMPLETED
|
命令发送BOOT_COMPLETED广播,而不用重启测试机或模拟器来测试BOOT_COMPLETED广播,这条命令可以更精确的发送到某个package,如下:
1
|
adb shell am broadcast - a android . intent . action . BOOT_COMPLETED - c android . intent . category . HOME - n package_name / class_name
|
转载于:https://my.oschina.net/sarashare/blog/637353
Android应用如何开机自启动、自启动失败原因相关推荐
- 实现 Android 应用在开机时自启动
如果您在开发一个需要实时更新数据的应用程序,当有新的数据的时候提醒用户查看新的数据,那么您需要在后台开起一个Service,然后实时的去网 络上获取数据,但是如果用户关机重启,您的Service可能就 ...
- Android监听开机广播自启动程序
应用开机自启动的原理是监听开机广播android.intent.action.BOOT_COMPLETED, 监听到该广播时会启动进程,进入Application 1.在Manifest中声明广播 & ...
- android 6.0关闭开机启动器,Android实现开机自启动及开机自启动失败原因
1.开机自启动实现代码 BroadcastReceiver开机自启动实现,MainActivity.class为自启动显示的页面. public class BootBroadcastReceiver ...
- Android功耗(16)---自启动管理
Android性能优化 -- 自启动管理 自启动管理简介 Android手机上安装的很多应用都会自启动,占用资源越来越多,造成系统卡顿等现象.良好的自启动管理方案管理后台自启动和开机自启动,这样就可以 ...
- 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )
文章目录 一.使用 DexClassLoader 获取组件类失败报错 二.失败原因分析 一.使用 DexClassLoader 获取组件类失败报错 在上一篇博客 [Android 逆向]启动 DEX ...
- Linux 系统如何设置开机程序自启动
这里写目录标题 1. Linux 系统如何设置开机程序自启动 1.1. /etc/rc.local 1.2. crontab(类似于 Windows 的任务计划服务) 1.3. 注册系统服务 1. L ...
- android rom打包失败,导致安卓手机刷机失败的原因有哪些?安卓刷机失败原因汇总...
经常使用安卓手机的朋友都知道,当手机使用时间长了之后,多开几个程序便会出现手机卡顿的情况,目前解决这一现象比较好的办法就是刷机,当然刷机是有风险的,如果操作失误就可能会导致手机变砖,为了防止刷机新手在 ...
- 设置电脑开机软件自启动的简便小方法
设置电脑开机软件自启动的方法有好几种,但我觉得这是最简便的一种,这里以一个多功能截图软件作为示例. 1. 打开文件夹 C:\ProgramData\Microsoft\Windows\Start ...
- linux 开机自动加载mod,linux 添加elasticsearch 开机重启(自启动)
在 /etc/init.d 文件夹下建立脚本 eg:data.sh #chkconfig: 2345 80 90 #description:auto_run #!bin/bash export JAV ...
最新文章
- 谷歌CEO称公司预计每月收购一家小公司
- [BZOJ 4916]神犇和蒟蒻
- 河南职称计算机啥时间考试,河南省2020年高级职称考试时间与具体安排
- Mysql orangepi_SSH远程登录香橙派Orange Pi Zero2开发板的操作方法
- mysql 时间chuo格式化_mysql格式化日期
- Python标准库中的uuid
- [转载] Java 方法(方法重载)与数组
- Linux系统centos6.7上安装libevent
- 【数学】求三角形的外接圆圆心
- innerHTML、innerText和outerHTML的区别
- bash: node: command not found
- 奥迪坚技术革新带动信用卡呼叫中心管理升级
- 纷享销客百思特 | 数字化营销赋能企业新增长沙龙圆满落幕
- ICPC 2022西安回顾
- Mac和Windows共享文件,不借助任何软件
- linux 磁盘参数优化: barrier
- c 语言 pthread_create_【励达外语】第八篇 语言学习的5个关键期(上)
- 开学季,孩子们怎么学习?
- 中微单片机79F738
- MySQL数据库的简单使用(基础篇)