Android 4.0及以上版本接收开机广播BOOT_COMPLETED、开机自启动服务

情景概要:自己做的一个项目的时候,或得不到开启启动的通知,这样更别说开机启动通知里面实现开机服务功能了,查找了N多资料,说法不一,太多的人说4.0之后无法获得开机通知,通过各种渠道,各种大牛的方式仍然是那些N多人说不可行的方法,即使大牛给的是英文文档也是说这样可以的。

最后发现,开启启动通知已经实现了,但是自己的疏忽没有发现,我通过在通知里面弹出一个Toast,但是真机或者模拟器在开机的时候都需要很多启动项,导致最后的Toast弹出很晚,而自己却没看见。你可以在通知里面弹出10个以上的Toast,测试一下,发现通知确实启动了,只是时间慢了些。有人说不同的机型下还是得不到开机启动通知,我还了三款手机测试,均通过。

下面是转载的一篇测试版,大家可以简单测试。

几个月来看到CSDN上看到很多朋友发帖询问开机自动启服务的问题,也就是BOOT_COMPLETED广播的问题,有的人说开机能收到广播,有的人又说开机收不到广播,这里本人亲自试验并总结分享给大家!

原来,在3.1之后,系统的PackageManager增加了对处于“stopped state”应用的管理, 这个stopped和Activity生命周期中的stop状态是完全两码事,包管理器中的stopped state指的是安装后从来没有启动过或者是被用户手动强制停止的应用。这点大家可以到“设置”——>"应用程序",查看任何一个安装的应用,看看“行停止”这个按钮是否变灰就知道了。系统增加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES
, 来标识一个intent是否激活处于“stopped state”的应用。当2个Flag都不设置或者都进行设置的时候,采用的是FLAG_INCLUDE_STOPPED_PACKAGES的效果。有了上面的新机制之后, google觉得给所有的广播intent默认加上FLAG_EXCLUDE_STOPPED_PACKAGES会非常的Cooooool,能在一定程度上避免流氓软件、病毒啊干坏事,还能提高效率,就导致了RECEIVE_BOOT_COMPLETED广播如果用户没有运行过应用或者在设置中强行停止了应用, 就不会接BOOT_COMPLETED广播。

总而言之:要想获得开机广播,你必须在保证两点,1)你的应用程序在安装后必须运行一次;2)你的应用程序没有被强行停止

那么如果要实现开机自启动服务,该怎么实现?直接上源码

1、BootCompletedReceiver.java文件

public class BootCompletedReceiver extends BroadcastReceiver {  

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        Log.d("LibraryTestActivity", "recevie boot completed ... ");
        context.startService(new Intent(context, TestService.class));
    }
}

配置文件中:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  

<receiver android:name=".BootCompletedReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>  

注意,一定要加上权限,否则就收不到广播咯。

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

3、安装应用到你的手机后,启动一次该应用,那么下次开机就能收到BOOT_COMPLETED广播,并且就能看到TestService服务启动了。

做了个测试:到设置——>应用程序,找到刚才安装的应用,点击“强行停止”,那么重启手机后,就收不到BOOT_COMPLETED广播了。

如果该应用被有些三方安全软件强制杀掉进程后,重启手机也会收不到BOOT_COMPLETED广播。

时间: 2024-10-12 17:33:58

Android 4.0及以上版本接收开机广播BOOT_COMPLETED、开机自启动服务的相关文章

Android 5.0 documentation CHM 版本 下载

由于某种原因,在国内查看官网Android开发文档经常性打不开,下载其离线文档,使用时候不流畅,机缘巧合之下,在ApkBus网站发现发现Android 5.0 CHM版本开发文档,由于其下载的链接在电子工程世界,需注册才能下载.本着分享的精神,自己上传到百度云,方便开发者下载. 下载地址: 链接:http://pan.baidu.com/s/1bnhixKN 密码:sm4u 注意事项: Android 5.0 documentation CHM 打开后,点击链接没有反应,则需右键属性 安全- >

Android 6.0 M userdebug版本执行adb remount失败

[FAQ18076]Android 6.0 M版本默认会打开system verified boot,即在userdebug和user版本会把system映射到dm-0设备,然后再挂载.挂载前会检查system分区数据完整性,如果system分区被恶意修改了则不允许挂载system. userdebug版本如果需要remount system分区来push文件debug,不需要重新编译版本disable dm-verity,只需要执行以下adb命令即可. adb root adb disable

Android 5.0及以上版本使用webview不能使用Cookies解决方案

Android 5.0以上的手机使用原生WebView浏览网页,在进行登录的时候会提示验证码错误,通过查找5.0以上系统的api文档,发现5.0以上版本的webview做了较大的改动,如:同步cookie的操作已经可以自动同步.但前提是我们必须开启第三方cookie的支持. 解决方法:cookieManager.setAcceptThirdPartyCookies(webview, true); if(android.os.Build.VERSION.SDK_INT >= Build.VERSI

Android 5.0 Lollipop 短彩信接收流程

短彩信接收流程和来电流程有点类似,最开始也是RIL层上报短信事件,然后上层来处理接收短信的流程.android的ril位于应用程序框架与内核之间,分成了两个部分,一个部分是rild,它负责socket与应用程序框架进行通信.另外一个部分是Vendor RIL,这个部分负责向下是通过两种方式与radio进行通信,它们是直接与radio通信的AT指令通道和用于传输包数据的通道,数据通道用于手机的上网功能,其中RIL.java主要用于hardware层和framework通信.在RIL.java中通过

Android开发之深入理解Android 7.0系统权限更改相关文档

摘要: Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限请求代码(默认权限禁止),否则应用程序无法响应:Android 7.0在Android 6.0的基础上,对系统权限进一步更改,这次的权限更改包括三个方面: APP应用程序的私有文件不再向使用者放宽 Intent组件传递file://URI的方式可能给接收器留下无法访问的路径,触发FileUriExposedException异常,推荐使用FileProvider DownloadMana

Android 5.0 源代码结构

本节书摘来自异步社区<深入理解Android 5 源代码>一书中的第2章,第2.2节分析Android源代码结构,作者 李骏. 网址:https://yq.aliyun.com/articles/93279?spm=5176.100239.blogcont93310.17.gtBsUg 2.2 分析Android源代码结构 获得Android 5.0源代码后,源代码的全部工程分为以下3个部分. Core Project:核心工程部分,这是建立Android系统的基础,被保存在根目录的各个文件夹

Android 5.0以上heads up通知

适用Android系统: 1) Android版本>= 5.0 2) 部分ROM是不支持 RemoteViews view=getRemoteViews(body,title, R.mipmap.ic_report_problem_red_24px, 0, date); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.L){ notification.headsUpContentView=view; notification.vibrate= new

android 5.0新特性

Android Lollipop 面向开发者的主要功能 Material Design 设计 注重性能 通知 以大屏幕呈现 以文档为中心 连接性能再上一级 高性能图形 音频处理功能更强 摄像头和视频处理进一步完善 Android 在办公中的应用 屏幕截图和共享 新型传感器 Chromium WebView 辅助功能和输入 构建低电耗应用 欢迎使用 Android 5.0 Lollipop,这是迄今为止规模最大最为雄心勃勃的 Android 版本! 此版本为用户推出了各种崭新的新功能,为开发者则提

Android 5.0 Lollipop介绍

Android Lollipop介绍 Android 5.0 Lollipop,此版本为用户提供了丰富的新功能,并为开发者新增了数以千计的 API,它进一步扩展了 Android 的应用范围,从手机.平板电脑和可穿戴式设备,扩展到电视和汽车. 1.Android 5.0新增功能与特性 Material Design: 简介:Material Design语言的一些重要功能包括 系统字体Roboto的升级版本 ,同时颜色更鲜艳,动画效果更突出.杜拉特还简要谈到了新框架的一些变化--这个新框架也于今