开机自启动很简单。
你是想做什么?
是不是想开机后,自动启动一个服务?然后在后台干一些别人不知道的事情?其实这很简单呀?
不过首先需要明确一点:没有Activity的Android程序,是启动不了滴,不过,你可以指定一个Activity,或者,指定一个桌面挂件呀,就是Widgets,知道吧?
那么,我们就有两种方法来实现你的功能:
第一,写一个很简单的程序,就一个Activity,指此Activity标题栏去掉,背景全透明,然后在此Activity的OnCreate将自己finish()掉,什么都不用干,只要在Manifest.xml中申明开机服务就OK,然后在程序内部响应此开机服务。
第二,不要Activity了,直接将程序写成一个Widgets……
如果你还不明白的话,可以说一声,我写一个给你看。不过我写出来你看过后,你就又少了一次自己研究的机会了……

解决方案 »

  1.   

    友情提示:<action android:name="android.intent.action.BOOT_COMPLETED" />
      

  2.   


    按照第一种方法,是不是需要先手动去启动这个activity之后,才能实现开启自启动服务?
      

  3.   


    3.1之前,没有activity也是可以的,但是3.1之后,如果程序没有启动运行过,receiver是不起作用的
      

  4.   

    呵呵,看你你是真想做坏事了,怕木马不能自启动是吧?放心吧,只要程序安装了,只要你在Manifest.xml中定义了开机广播接收,并且在程序中对此广播作了接收后的处理操作,那么,只要安装了程序,剩下的你就别管了,会起作用滴,不信你试试……
      

  5.   

    额,既然是接收广播,你应该知道,当系统成功安装或者卸载一个程序时,也会发出一个广播,嘿嘿,而且,程序自身是可以接收“程序安装”这个广播的。可以好好例用一下。
    比如说写个程序,接收“程序安装”这个广播,然后在这个广播的处理事件中,起一个服务……
    Intent.ACTION_PACKAGE_ADDED; 
    ——成功的安装APK之后 
    ——广播:设备上新安装了一个应用程序包。 
    ——一个新应用包已经安装在设备上,数据包括包名(最新安装的包程序不能接收到这个广播) 嗯,顺便多嘴一句,要实现你的功能,其实有很多很多很多种方法,例如下面的这么多广播,你可以随便用啊,什么开屏解锁,开关机,来电,来短信,电池,SDK……
    Android系统广播大全:http://www.cppcode.com/archives/2012/03/13/181.html
      

  6.   

    主要是android4.0的广播机制好像改了,就是一个应用如果安装到手机后没有被启动过的话是接收不到系统广播的,也就是说如果你想接收系统广播,那必须保证你的程序被运行过。我查到的资料说是广播机制增加了两个flag,默认情况下系统是不会给一个没有启动过的程序发送系统广播的
      

  7.   

    我记得我在4.0.1上就实现了一个服务,就是接收到bootcompleted广播后启动该服务的。当时没有任何问题啊!
      

  8.   

    还有想问一下楼主,是你的应用要跑在4.0的平台上,还是你开发应用程序时用的sdk是4.0的
    我记得我当时开发的那个应用是用2.3的sdk开发的,但是在4.0.3的手机上是可以接受bootcompleted广播的,这样只要系统成功启动了,我的这个服务就会成功启动。
      

  9.   

    我的应用时在2.2的sdk开发的,在4.0.3htc的手机上接收不到系统开机广播。请问一下,你的应用安装后是不是启动过了?能给我一个demo吗??急!谢谢!
      

  10.   


    这一圈人还没你弄的明白.
    如你所说,andriod 3.1以后,安装后没经过用户启动,所有的Intent都是收不到的.
    这样做是因为考虑到安全性问题.
    除非Intent里指定了你所说的FLAG_EXCLUDE_STOPPED_PACKAGES.
    bootcompleteIntent是没有指定为FLAG_EXCLUDE_STOPPED_PACKAGES的.
    所以你想装上去就能开机自己启动是不可能的.从安全性角度上来说,谁也不想下载了一个app后,没碰过它,每次就能自己启动吧.
    你的app从设计上来看,是不是可以改善一下呢?
      

  11.   

    定制的系统的话,把系统发bootcompleteIntent的地方改一下,在intent里设上FLAG_EXCLUDE_STOPPED_PACKAGES,那样在这个系统里,你的APP就可以开机启动了
      

  12.   

    把我的app编译成系统程序后,在htc、小米、三星等手机上安装运行?编译的时候使用4.0sdk
      

  13.   

    请问你有什么方法解决android 4.0实现开机自启动服务的办法吗?能不能不需要用户启动一次程序,或者在apk安装后直接启动一次程序?当然我说的不是通过两个apk来实现的方式
      

  14.   


    我写好了一个,有源代码和编译好的apk文件,放在了“我的资源”中。
    代码需要放在源码下编译(make MyTest)
      

  15.   

    apk文件安装到我手机上失败了,我的手机是4.0.3htc。你是怎么做的,或者推荐几篇有关文章
      

  16.   


    我在我的手机上测试是可以成功的,也是4.0.3,不过现在还是工程机,用的userdebug版本的。
      

  17.   

    可以开机自启动服务,不用activity也可以,但是有个问题,就是你第一次启动的话是没问题的,但是假如你在手机里面运行了这个程序,后面又删除了这个程序之后又要装上这个程序启动的话就不能启动了,只能写一个activity启动,然后你在androidMenifest里面把activity注释掉,以后就不会有activity了
      

  18.   

    是啊  没有activity是不能开机启动的    我也遇到这样的问题了  查了半天才知道...
      

  19.   

    系统无法执行android.intent.action.BOOT_COMPLETED的广播,不是不能执行广播里的内容,你的activity可见与不可见对结果没有影响,一样不会执行!
      

  20.   

    1楼说的就是解决方案。但是自动Android3.1版本后,程序默认安装后是禁止状态,不能自启动,只有在激活状态才能监听到BOOT_COMPLETED广播。
    http://developer.android.com/about/versions/android-3.1.html#launchcontrols
      

  21.   

    我也在学习,写了一个监听短信的apk,没有activity,可是发现根本后台不运行,正在苦恼
      

  22.   


    兄弟,你也在写这个啊。我之前在2.2SDK上开发。非常简单,但是现在的手机都是4.0系统以上了。
    有难度。兄弟,你可以加下我QQ28506641.咱们共同交流交流。看看有什么方法可以搞定
      

  23.   

         4.0以上必须要运行过这个程序一次才能自启动,没有办法了。我最近也在做类似的吧。  实现不root或者root过得手机里自启动,并且无法被360等软件清理掉。初步是实现了。
        只能说root过的手机实现自启动还真的不太容易(在360等流氓软件禁止情况下),至于没有activity的没有试过,我也试试看能不能成功吧。
      

  24.   

    起个activity,在第一次进去后把图标干掉。总之自启动很麻烦,我在4.3 miui rom上根本无法自启动, 在flyme3.5上设置为信任程序又可以启动