ググれば出てくるんだけど、情報が古いので書きなおしてみた。

全体

Android OS の起動が終わると android.intent.action.BOOT_COMPLETED がブロードキャストされるので、それを捕まえて任意の処理をする。

起動時に呼び出されるコード

ブロードキャストを捕まえたときに呼ばれるコード。MyActivity を開始している。BroadcastReceiver から Activity を開始するには Intent.FLAG_ACTIVITY_NEW_TASK が必要なので注意。

```java StartupReceiver.java
public class StartupReceiver extends BroadcastReceiver {
private static final String TAG = “StartupReceiver”;

@Override
public void onReceive(Context context, Intent intent) {
    Log.d(TAG, "onReceive:" + MyApplication.data);
    Intent intentActivity = new Intent(context, MyActivity.class);
    intentActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intentActivity);
} } ```

AndroidManifest.xml で受信登録

StartupReceiver を登録する。
忘れちゃいけないのが android.permission.RECEIVE_BOOT_COMPLETED による権限の設定。これがないと受信できない。

```xml AndroidManifest.xml

```

端末を再起動して試す

で知った adb shell am broadcast -a android.intent.action.BOOT_COMPLETED は GenyMotion でも使えました。
RECEIVE_BOOT_COMPLETED の位置によっては、テストが成功したりしなかったりだと書かれておられますが、上記の AndroidManifest.xml では、テストも実際の再起動も成功しました。

参考

Android
Java

published

Ads

Read more!

amay077

Microsoft MVP(Xamarin). フルリモートワーカー. Geospatial Mobile app developer. Love C#.

amay077 amay077