700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android 实现开机自启动 Service

Android 实现开机自启动 Service

时间:2023-10-24 15:43:21

相关推荐

Android   实现开机自启动    Service

首先做一个监听器:

public class StartBroadcastReceiver extends BroadcastReceiver{private static final String ACTION = "android.intent.action.BOOT_COMPLETED";public void onReceive(Context context, Intent intent) {if (intent.getAction().equals(ACTION)){Intent i= new Intent(Intent.ACTION_RUN);i.setClass(context, TService.class);context.startService(i);}}}

然后再做一个service:

package com.testService;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.Handler;import android.os.IBinder;import android.util.Log;public class TService extends Service {/*** 创建Handler对象,作为进程传递postDelayed之用*/private Handler objHandler = new Handler();private int intCounter = 0;private static final String TAG = "TService";private NotificationManager notificationManager;private Runnable mTasks = new Runnable() {public void run() {intCounter++;Log.i("HIPPO", "Counter:" + Integer.toString(intCounter));objHandler.postDelayed(mTasks, 1000);}};public void onCreate() {Log.d(TAG, "============> TService.onCreate");notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);showNotification();super.onCreate();}public void onStart(Intent intent, int startId) {Log.i(TAG, "============> TService.onStart");objHandler.postDelayed(mTasks, 1000);super.onStart(intent, startId);}public IBinder onBind(Intent intent) {Log.i(TAG, "============> TService.onBind");return null;}public class LocalBinder extends Binder {public TService getService() {return TService.this;}}public boolean onUnbind(Intent intent) {Log.i(TAG, "============> TService.onUnbind");return false;}public void onRebind(Intent intent) {Log.i(TAG, "============> TService.onRebind");}public void onDestroy() {Log.i(TAG, "============> TService.onDestroy");notificationManager.cancel(R.string.service_start);objHandler.removeCallbacks(mTasks);super.onDestroy();}private void showNotification() {Notification notification = new Notification(R.drawable.icon,"SERVICE START", System.currentTimeMillis());Intent intent = new Intent(this, testService.class);intent.putExtra("FLG", 1);PendingIntent contentIntent = PendingIntent.getActivity(this, 0,intent, 0);notification.setLatestEventInfo(this, "SERVICE", "SERVICE START",contentIntent);notificationManager.notify(R.string.service_start, notification);}}

再做一个主程序:

package com.testService;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class testService extends Activity {private Button button01;private Button button02;private int flg;private Intent tsIntent;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button01 = (Button)findViewById(R.id.Button01);button02 = (Button)findViewById(R.id.Button02);tsIntent = this.getIntent();Bundle bundle = tsIntent.getExtras();if (bundle == null){flg = 1;DisplayToast(this,"Service Start",2);startService();finish();}else{DisplayToast(this,"Service Stop",2);stopService();finish();}button01.setOnClickListener(Listener01);button02.setOnClickListener(Listener02);}Button.OnClickListener Listener01 = new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstartService();}};Button.OnClickListener Listener02 = new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstopService();}};private void startService() {Intent i = new Intent(testService.this, TService.class);i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);this.startService(i);}private void stopService() {Intent i = new Intent(testService.this, TService.class);this.stopService(i);}public static void DisplayToast(Context context , String str , int time){if (time == 1){//短时间显示ToastToast.makeText(context, str, Toast.LENGTH_SHORT).show();}else if (time == 2){//长时间显示ToastToast.makeText(context, str, Toast.LENGTH_LONG).show();}}}

最后在androidmenfest.xml中注册一下接受广播器和服务以及开通权限:

接收广播器:

<receiver android:name=".StartBroadcastReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED"/></intent-filter></receiver>

服务:

<service android:name=".TService"android:label="TService"android:icon="@drawable/icon"android:enabled="true"android:exported="true"android:process=":remote"></service>

注册权限:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。