应用开机自启动的原理是监听开机广播android.intent.action.BOOT_COMPLETED,然后在BroadcastReceiver中打开应用

实现BroadcastReceiver

首先实现一个BroadcastReceiver,该广播接收者监听"android.intent.action.BOOT_COMPLETED"广播,当接收到该广播时,打开该应用的启动页面。

public class BootReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {            Intent toIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());            context.startActivity(toIntent);        }    }}

在Manifest中声明该广播接收者

需要注意的是该广播接收者只能在Manifest中声明,而不能在代码中启动,否则无法接收到开机广播。

                                                                        

声明权限

最后别忘了在Manifest中声明接收开机广播的权限,很多人都忘了这一步,导致无法接收到广播

无法接收到广播

这里列举下一些常见的无法接收到开机广播的原因:

  1. 未添加权限
  2. 被系统自带或360手机助手等拦截,需在权限管理设置里放开开机自启动的权限。
  3. 应用安装到sd卡上,安装在sd卡上的应用是收不到BOOT_COMPLETED广播的。
  4. 系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播。
  5. 应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播。

 

更多相关文章

  1. Android广播接收器(二)
  2. android 删除开机动画
  3. 获取系统电量
  4. network: android 使用广播监听网络状态
  5. android软件开发:程序的开机启动
  6. Android开机自动运行APP——BroadcastReceiver
  7. 安卓广播的静态注册和动态注册
  8. [Android(安卓)基础] -- Android(安卓)8.1 开机流程分析(一)
  9. Android(安卓)Mms专题之:接收信息流程

随机推荐

  1. Ubuntu18.04下载编译Android8.1.0(一)
  2. android 界面布局
  3. error XA5205: Cannot find `aapt.exe`.
  4. listView 中relativeLayout 布局的 andro
  5. Android中.9.png图片的使用过程和原理
  6. Android之emulator: ERROR及logcat不能提
  7. Android编译环境 相关
  8. android发送/解析彩信的几篇文章
  9. 很实用的android按键处理
  10. Android Tip1:获取 android 每个 app 内存