步驟 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
沒有留言:
張貼留言