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. 图解DataGridView编辑列

    WinForm中DataGridView功能强大,除了可以自动绑定数据源外,还可以根据需求编辑列.下面以截图说明添加编辑列的步骤(HoverTreeSCJ 项目实际界面). 1.选择DataGridV ...

  2. MVC中实现Area几种方法

    概述        ASP.NET MVC中,是依靠某些文件夹以及类的固定命名规则去组织model实体层,views视图层和控制层的.如果是大规模的应用程序,经常会由不同功能的模块组成,而每个功能模块 ...

  3. JQ常用代码

    页面加载的时候添加一个定时器,0秒之后执行hideURLbar函数. hideURLbar函数将页面滚动至坐标(0,1) <script type="application/x-jav ...

  4. 谷歌livereload插件使用

    1.插件下载地址:http://www.chromein.com/search_livereload_1.html 2.谷歌浏览器启用改插件 3.sublime 安装livereload插件,安装方法 ...

  5. SQL 常识

    1.varchar 与 nvarchar 的区别? varchar(n):长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输 ...

  6. 火狐下多个span连在一起和换行写存在差异

    当父元素的宽度确定,多个span换行写,span加起来占的宽度比预设的大

  7. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q138-Q140)

    Question  138 You are designing a SharePoint 2010 application that will deploy a Web Part assembly. ...

  8. 基本bash命令

    bash手册 输入man命令可以访问存储在linux系统上的手册页面.  如果不记得命令名,可以使用关键字搜索手册.语法是man -k 关键字.  手册被分为了不同的内容区域.man工具提供的是命 ...

  9. Android:Toast

    Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.而且Toast主要用于向用户显示提示消 ...

  10. 初学HTML 表单交互标签

    表单标签在网站中主要负责的是进行与用户间的交互, 如果没有了交互, 那么网站就只是一个展示, 会死气沉沉的. <form>表单标签 <form>表单标签可以把浏览者(也就是我们 ...