2012年10月15日月曜日

端末起動時(ブート時)にサービスを起動する方法 ? Android

今回は端末起動時にサービスを起動する方法です。
といっても、端末起動時に何かやりたい場合、概ねこの方法が使えると思います。
大まかな手順は以下のような感じです。

  1. Service作成
  2. BroadcastReceiver作成
  3. AndroidManifest.xmlへService登録
  4. AndroidManifest.xmlへBroadcastReceiver登録
  5. AndroidManifest.xmlへパーミッション設定

(1)Service作成

1 package com.sample.bootup;
2  
3 import android.app.Service;
4 import android.content.Intent;
5 import android.os.IBinder;
6  
7 public class BootupService extends Service {
8  
9     @Override
10     public IBinder onBind(Intent arg0) {
11         return null;
12     }
13 }

(2)BroadcastReceiver作成
ここで起動時にサービスを起動します。
ネットに通信してデータを取ってくるなど、端末起動時に何かしたい場合はOnReceiveに処理を記述します。

1 package com.sample.bootup;
2  
3 import android.content.BroadcastReceiver;
4 import android.content.Context;
5 import android.content.Intent;
6  
7 public class BootReceiver extends BroadcastReceiver {
8     @Override
9     public void onReceive(Context context, Intent arg1) {
10         /* startup Service through Intent */
11         Intent intent = new Intent(context, BootupService.class); 
12         context.startService(intent); 
13     }
14 }

(3)AndroidManifest.xmlへService登録
淡々と設定します。

(4)AndroidManifest.xmlへBroadcastReceiver登録
こちらも淡々と設定します。

(5)AndroidManifest.xmlへパーミッション設定
android.permission.RECEIVE_BOOT_COMPLETEDのパーミッションを設定しないといくら頑張って実装してもも起動時に通知を受け取ることができません。
何気に忘れやすいので注意です。

以上です。

(補足)BOOT_COMPLETEDが配信されない場合は、この記事も確認してみてください

0 件のコメント:

コメントを投稿