2014年2月5日

Android ─ 開機時自動啟動Service

如果我們想要Service是android 一開機的時候就啟動,我們該如何操作呢

步驟 1.

Service按照正常宣告
import android.app.Service;
import android.os.IBinder;
import android.content.Intent;
 
public class ServiceExample extends Service {
      @Override
      public IBinder onBind(Intent intent) {
            return null;
      }
 
      @Override
      public void onCreate() {
            super.onCreate();
                // do something when the service is created
      }

步驟2.

新增一個BroadcastReceiver 類別,在這個 class裡使用 onReceive() 這個方法,來接收Android系統開機時所發送的廣播
當我們收到Intent.ACTION_BOOT_COMPLETED這個廣播時,去Start ServiceExample 這支 Service。
import android.content.Context;
import android.content.BroadcastReceiver;
import android.content.Intent;
 
public class Receive_BootCompleted extends BroadcastReceiver{
     @Override
     public void onReceive(Context context, Intent intent) {
        //we double check here for only boot complete event
        if(intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED))
        {
           //here we start the service            
           Intent serviceIntent = new Intent(context, ServiceExample.class);
           context.startService(serviceIntent);
       }
    }
}

步驟3.

接著我們要在manifest宣告權限 use-permission,讓我們的BroadcastReceiver 可以有接收BOOT_COMPLETED 的權限



之後再宣告 Receiver 與 Service


      
            
      



根據這些步驟,service就可以在android開機時自動啟動

注意事項

在Android 3.1之後,如果Service沒有系統權限的情況下
是無法使用BOOT_COMPLETED的權限
如果要使用,必須在專案裡面增加一個Activity
此外在安裝到手持裝置時,還必須手動執行該app
如此Service才能開機時自動啟動

參考網址1
參考網址2
參考網址3



沒有留言:

張貼留言