android程序实现开机启动的原理,简单点说就是做一个广播接收器,接收到开机广播时就启动activity或service或执行其它操作。Android系统在启动的时候会发出一个开机广播,内容为ACTION_BOOT_COMPLETED,我们写一个接收器,每当接收到这个广播的时候,就说明是刚开机,然后启动需要开机启动的程序就行了。具体步骤: 第一步,新建BootBroadcastReciever.java,继承BroadcastReceiver,

public class BootBroadcast extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
        
        /*如果接收到开机广播*/
        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
        
        //这里执行开机启动的操作,比如启动activity或service
        }
 
    }
 
}
  如果是启动一个activity,假如要启动MainActivity,则if语句块里这么写:

Intent newIntent = new Intent(context, MainActivity.class); 
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  //这个标记必须加
context.startActivity(newIntent); 如果是启动一个service,假如要启动MainService,则if语句块里这么写: context.startService(new Intent(context, MainService.class)); //这句也可拆成两句写 注意:activity和service都要在Manifest.xml里面注册
第二步,在Manifest里面注册上面的广播接收器 BootBroadcastReciever

 
<receiver android:name=".BootBroadcastReciever" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.intent.action.DATA_STATE" />
        <action android:name="android.intent.action.PACKAGE_RESTARTED" />
    </intent-filter>
</receiver>
 

注意:网上其它教材在filter中都只写了<action android:name="android.intent.action.BOOT_COMPLETED" />这一句,这句表示申明接收开机广播的权限。有的教材可能会多加<category android:name="android.intent.category.Home" />这个category标签,我不知道这个 是什么意思,不过貌似和开机启动无关,删了也没问题。至于

<action android:name="android.intent.action.DATA_STATE" />
<action android:name="android.intent.action.PACKAGE_RESTARTED" />
 

这两句,是保证在4.0的系统中开机启动的服务被用户在“管理应用程序”里面给强行停止后,下次开机时服务依然能自启动,如果没这两句,用户强行停止某项开机启动的服务后,下次开机时该服务就不会自动启动了。
第三步,在Manifest.xml中注册监听开机广播的权限 在Manifest.xml中添加  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 这一步在有的教程里面没提到,这个好像是新版本的sdk中才需要这样写,旧版本(通常指api 11一下)的就不需要这一步了,具体我也不清楚,反正多了这一步更保险。

Android开机启动程序的更多相关文章

  1. Android开机启动Activity或者Service方法

    本文出自 “Bill_Hoo专栏” 博客,请务必保留此出处http://billhoo.blog.51cto.com/2337751/761230 这段时间在做Android的基础开发,现在有一需求是 ...

  2. Android开机启动Activity或者Service方法(转载)

    这段时间在做Android的基础开发,现在有一需求是开机启动,按照网上某些博文教程做了下,始终不成功,一开机总是提示所启动的应用程序意外终止,于是参考了Android SDK doc,终于解决问题,下 ...

  3. android开机启动流程说明

    android开机启动流程说明 第一步:启动linux 1.Bootloader 2.Kernel 第二步android系统启动:入口为init.rc(system\core\rootdir) 1./ ...

  4. Linux开机启动程序详解

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

  5. Linux开机启动程序详解[转]

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

  6. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图     方法2:利用命令行chkconfig命令进行设置 简要说明 ...

  7. 不同linux系统添加开机启动程序的命令

    see http://phpcj.org/blog/%E4%B8%8D%E5%90%8Clinux%E7%B3%BB%E7%BB%9F%E6%B7%BB%E5%8A%A0%E5%BC%80%E6%9C ...

  8. ANDROID 开机启动VNC SERVER

    ANDROID 开机启动VNC SERVER 背景信息: 最近在做一个项目,在项目需求中有这么一项“要把VNC SERVER 添加到android里并让其开机自启动”.其实做这个项目也挺缚手缚脚的,因 ...

  9. Linux如何实现开机启动程序详解(转)

    Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. ...

随机推荐

  1. 从零开始,搭建博客系统MVC5+EF6搭建框架(4)下,前后台布局实现、发布博客以及展示。

    一.博客系统进度回顾 目前已经完成了,前台展示,以及后台发布的功能,最近都在做这个,其实我在国庆的时候就可以弄完的,但是每天自己弄,突然最后国庆2天,连电脑都不想碰,所以就一直拖着,上一篇写了前端实现 ...

  2. 关于SQL储存过程中输出多行数据

    declare @num1 int           --为符合条件的总行数 select @num1=COUNT(1) from cardInfo where openDate between @ ...

  3. Nancy之结合TinyFox调试备忘

    最近把一个小项目的数据库换成MongoDB,同时用了MongoRepository 这个开源组件来对数据进行操作. 通过NuGet安装之后,它会自动在web.config文件生成一个连接字符串.但是却 ...

  4. IIS事件查看器_WebServer事件查看器_帮助查看IIS-Web服务器事件执行日志

    IIS服务器是我们常用的Web站点部署工具,而我们有时可能遇到IIS服务器的应用程序池莫名其妙的关闭了,或者是其他未知原因等等,我们这是可以通过微软提供的WebServer(Web服务事件查看器),来 ...

  5. liunx命令

    关机 (系统的关机.重启以及登出 ) shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minute ...

  6. Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么?

    Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么? Integer.valueof(String s)是将一个包装类是将一个实际 ...

  7. 一元多项式的乘法与加法运算(C语言)

    输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. 输出格式: 输出分2行,分别以指数递降方 ...

  8. 【夯实PHP基础系列】linux下yum安装PHP APC

    Alternative PHP Cache(可选PHP缓存),依赖于 PECL扩展库 用源码方式安装,直接yum就行了:首先要安装apc的依赖包:yum install php-pear php-de ...

  9. 【英语学习】2016.09.11 Culture Insider: Teacher's Day in ancient China

      Culture Insider: Teacher's Day in ancient China 2016-09-10 CHINADAILY Today is the 32nd Chinese Te ...

  10. jQuery:详解jQuery中的事件(一)

    之前用过一些jQuery的动画和特效,但是用到的部分也不超过10%的样子,感觉好浪费啊——当然浪费的不是jQuery,而是Web资源.后来就想深入研究下jQuery的内部机理,读过两遍jQuery源代 ...