在前面的文章中提到了remote service 的创建过程,现在我们要让它开机自动启动
1.在前面代码的基础上添加 RemoteServiceBootReceiver.java ,实现一个intent的receiver
package com.fly; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class RemoteServiceBootReceiver extends BroadcastReceiver { private static final String TAG = "U0fly RemoteServiceBootReceiver"; static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context arg0, Intent arg1) { Log.d(TAG, "Boot completed"); // TODO Auto-generated method stub if (arg1.getAction().equals(ACTION)) { // service Intent myintent = new Intent(arg0, RemoteService.class); myintent.setAction("com.fly.RemoteService"); arg0.startService(myintent); } } }
2.在AndroidManifast.xml中添加权限,并注册一个receiver
3.下面是一个简单实例, 完成开机启动Activity的功能:
运行效果:
代码:
BootSayHello.java
package com.fly; import android.app.Activity; import android.os.Bundle; public class BootSayHello extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
BootBroadcastReceiver.java
package com.fly; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootBroadcastReceiver extends BroadcastReceiver { static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub if (intent.getAction().equals(ACTION)) { Intent sayHelloIntent = new Intent(context, BootSayHello.class); sayHelloIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(sayHelloIntent); } } }
AndroidManifest.xml