Android开机启动Activity或者Service方法
4.0以后的系统,需要apk至少有一个activity,你把apk安装上去了以后,手动运行一次。以后就可以开机启动了。

解决方案 »

  1.   

    楼主,这个问题我研究了一阵子,最后发现如果是三方应用没有系统权限的话,无解。
    原因如下:
    谷歌为了安全考虑(避免流氓软件、病毒啊干坏事,还能提高效率),4.0以后加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGES和FLAG_EXCLUDE_STOPPED_PACKAGES。系统发出的广播带有FLAG_EXCLUDE_STOPPED_PACKAGES这个flag,在应用进程没有启动的情况下是不能接收到的。
    当然如果是用户自定义的广播可以带有FLAG_INCLUDE_STOPPED_PACKAGES这个flag,那么即使应用没启动也可以收到广播(很遗憾啊!只能是三方自定义的广播)。
    由于开机的时候,进程还没有启动,所以根本收不到ACTION_BOOT_COMPLETED等系统发出的广播。
    最后只能遗憾的告诉楼主,没办法!
      

  2.   

    如果用户的手机是已经root过的,你可以通过申请root权限,在第一次安装的时候,申请到root之后,你就可以用Linux的命令来操作了,这时候你可以把你的应用升级成系统应用...不仅用户不能再卸载了,然后你想干这种开机启动的话,就service就行
      

  3.   

    加个<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />的权限,然后开机收到广播以后开启service
      

  4.   

    其实用广播就可以实现,创建一个开机启动的类,继承BroadcastReceiver,在用INTENT来启动。上代码public class StartRecevier extends BroadcastReceiver { @Override
    public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    Intent intent2 = new Intent(context,Main.class);
    intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent2);
    Log.d("boot_________!", "开机自启动");
    }}