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