关于开机启动activity或者services

android 开机自启动有三个步骤。

1. 首先实现一个BroadcastReceiver用来获取系统的 BOOT_COMPLETE 消息, 而该receiver又负责启动你的service或者activity.

写道
public class myReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
     String action = intent.getAction();
     if(action.equals("android.intent.action.BOOT_COMPLETED"))//与receiver的action android:name保持一致
 {//判断是否开机启动
      Intent i = new Intent(Intent.ACTION_RUN);
      i.setClass(context, yourService.class);
      context.startService(i); //在此做开启services
    //Intent intent = new Intent(context, BabyCareMain.class);
    // intent addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    // context.startActivity(intent );
 };    
//为了 在Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。    intent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     }
}

 

 

2.在Manifest文件中增加声明:

   a. 加入使用权限声明:

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

   b. 加入receiver 注册声明:


   <receiver android:name=".yourReceiver" >

         <intent-filter>

               <action android:name="android.intent.action.BOOT_COMPLETED" />

         </intent-filter>

   </receiver>

3.搞定

你可能感兴趣的:(android)