其实参考一下mms 一类的程序就明白了。仿造一份就OK。但是关键是要知道原理。
怎样让一个Service开机自动启动
2. 构造一个BroadcastReceiver类, 重构 其抽象方法onReceive (Context context, Intent intent), 在其中启动你想要启动的Service。
3. 在 Android Manifest.xml中,首先加入 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 来获得BOOT_COMPLETED的使用许可,然后注册前面重构的IntentReceiver类,在其 <intent-filter> 中加入 <action android:name="android.intent.action.BOOT_COMPLETED" /> ,以使其能捕捉到这个Action。
一个例子
|
receiver 部分
package com. xinocomm. device. ps2;
import android. content. BroadcastReceiver;
import android. content. Context;
import android. content. Intent;
import android. widget. Toast;
public class XinoDeviceReceiver extends BroadcastReceiver{
/*要接收的intent源*/
static final String ACTION= "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive( Context context, Intent intent){
if ( intent. getAction() . equals( ACTION)) {
context. startService(new Intent( context, Ps2Dev.class ) ) ; //启动PS2服务
Toast. makeText( context,"PS2 device monitor service has started!" , Toast. LENGTH_LONG). show( ) ;
}
}
}
如果是想要启动一个activity的话,则需要加一个flag,
//为了 在Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。 intent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 如:
Intent intent = new Intent(context, BabyCareMain.class);
Intent addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent );