[独習android]ブート時にサービスを起動するには

Posted November 23rd, 2010 in General. Tagged: , .

デバイスブート時にサービスを常駐させる方法。
ブート完了のイベントを受け取るBroadcastReceiverのサブクラスを作って、イベントを受け取ったときにサービスを起動するという流れ。

AndroidManifest.xml

01
02
03
04
05
06
07
08
09
10
11
12
13
14
...
<!-- デバイスブート時のインテントを受け取る許可 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <service android:name=".MainService" />
    <receiver android:name=".MainReceiver">
        <intent-filter>
            <!-- デバイスブート時のインテントを受け取るレシーバ -->
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
    ...
</application>
...

BroadcastReceiver

1
2
3
4
5
6
7
8
9
public class MainReceiver extends BroadcastReceiver {
    private final String TAG = "aZsleep";
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.v(TAG, "onReceive called");
        // サービスを起動する(BOOT_COMPLETED時)
        context.startService(new Intent(context, MainService.class));
    }
}

関連情報

Posted November 23rd, 2010 in General. Tagged: , .

One comment:

  1. am broadcast -a android.intent.action.BOOT_COMPLETED
    とかするとインテントをシミュレートできるらしい。

    groundwalker:

track feed