私はいくつかのエキストラを渡すリモートサービスを持っています。サービスは、アクティビティまたはブロードキャスト レシーバーから開始できます。アクティビティから開始すると、エクストラとアクションを渡し、サービスでそれらを取得できます。しかし、ブロードキャスト レシーバーから同じことを行うと、呼び出しgetExtra()
またはgetAction
両方が null を返します。
放送受信機からの起動方法は次のとおりです
public void onReceive(Context context, Intent intent) {
...
Intent service = new Intent(context, MyService.class);
intent.setAction("receieverAction");
intent.putExtra("some_extra", "extra_value");
context.startService(service);
}
次に、サービスで getExtras と getAction() を呼び出しますが、両方とも null です
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getAction(); // This is null when started from broadcast receiver
String extra = intent.getStringExtra("some_extra"); // and so is this
...
return START_NOT_STICKY;
}
これは特にブロードキャストレシーバーと関係がありますか、それともレシーバーが呼び出したときにサービスがすでに開始されていますかstartService()