Android 开机自启动service
import Android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent;
public class yourReceiver extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, ServiceTest.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startService(i); } }
复制代码ServiceTest 类:package radar.com; import Java.util.Calendar; import android.app.Service; import android.content.Intent; import android.os.Handler; import android.os.IBinder; import android.util.Log;
public class ServiceTest extends Service{ Handler hd1=new Handler();
/**启动activity的开关*/ boolean b;
/**启动一次activity之后的一分钟内将不再重新启动*/ int time;
public static final Intent ACTION_START = null; private static final String TAG = \"TestService\"; @Override
public IBinder onBind(Intent intent) { return null; }
@Override
public boolean onUnbind(Intent i) {
Log.e(TAG, \"============> TestService.onUnbind\"); return false; }
@Override
public void onRebind(Intent i) {
Log.e(TAG, \"============> TestService.onRebind\"); }
@Override
public void onCreate() {
Log.e(TAG, \"============> TestService.onCreate\"); hd1.postDelayed(mTasks, delay);
本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。
}
@Override
public void onStart(Intent intent, int startId) { Log.e(TAG, \"============> TestService.onStart\"); }
@Override
public void onDestroy() {
Log.e(TAG, \"============> TestService.onDestroy\");} public void log(){
Calendar c= Calendar.getInstance(); int h=c.getTime().getHours(); int m=c.getTime().getMinutes(); Log.i(\"hour\ Log.i(\"minute\
/**这里的16和10可以自己定义一下 主要是提醒的时间设置,我不想做的太繁琐,所有没有些闹钟,只是用这个测试一下:)*/
if(h==16&&m==10) {
/**为防止持续调用,所以用boolean 变量b做了一个小开关*/ if(!b){
Intent i = new Intent();
i.setClass(ServiceTest.this, showActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(i); this.stopSelf();
b=true; }
}
/**开关开启后计时60秒,在这60秒之内就不再重新启动activity了,而60秒一过,上面的h和m条件肯定就不成立了*/ if(b){ time+=5; if(time==60){ time=0; b=false; } }
}
/** 速度控制参数(单位豪秒) */ private int delay = 5000; /**
* 控制速度 * */
private Runnable mTasks = new Runnable()
本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。
{
public void run() {
log();
hd1.postDelayed(mTasks, delay);
} };
}
复制代码showActivity 类:(次类中啥都没有,就是演示一下activity可以被启动)package radar.com; import radar.com.R;
import android.app.Activity; import android.os.Bundle; import android.view.Window;
import android.view.WindowManager;
public class showActivity extends Activity{ @Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); } }
复制代码下面是很重要的AndroidManifest < ?xml version=\"1.0\" encoding=\"utf-8\"?>
< manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"radar.com\"
android:versionCode=\"1\"
android:versionName=\"1.0\">
android:icon=\"@drawable/icon\" android:label=\"@string/app_name\"> < service android:name=\".ServiceTest\" android:label=\"@string/app_name\"> < intent-filter> < action android:name=\"android.intent.action.MAIN\" /> < category android:name=\"android.intent.category.LAUNCHER\" /> < /intent-filter> < /service> < receiver android:name=\".yourReceiver\" > 本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。 < intent-filter> < action android:name=\"android.intent.action.BOOT_COMPLETED\" /> < category android:name=\"android.intent.category.HOME\"/> < /intent-filter> < /receiver> < activity android:name=\".showActivity\" android:label=\"@string/app_name\" android:configChanges=\"orientation|keyboardHidden|navigation\" android:screenOrientation=\"portrait\"> < intent-filter> < action android:name=\"android.intent.action.MAIN\" /> < category android:name=\"android.intent.category.LAUNCHER\" /> < /intent-filter> < /activity> < /application> < uses-SDK android:minSdkVersion=\"4\" /> < /manifest> 因篇幅问题不能全部显示,请点此查看更多更全内容