Android实现开机自启动Service

来源:互联网 发布:编程c 入门教程视频 编辑:程序博客网 时间:2024/05/22 01:42
一,首先做一个监听器:

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. */

    @Override

    public 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(){


                @Override

                public void onClick(View v) {

                        // TODO Auto-generated method stub

                        startService();

                }

           

    };

   

    Button.OnClickListener Listener02 = new OnClickListener(){


                @Override

                public void onClick(View v) {

                        // TODO Auto-generated method stub

                        stopService();

                }

           

    };

   

        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){

                        //短时间显示Toast

                        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

                }else if (time == 2){

                        //长时间显示Toast

                        Toast.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"/>

注意:接受广播和服务都必须注册在:<application>这里注册</application>
原创粉丝点击