1

私はいくつかのエキストラを渡すリモートサービスを持っています。サービスは、アクティビティまたはブロードキャスト レシーバーから開始できます。アクティビティから開始すると、エクストラとアクションを渡し、サービスでそれらを取得できます。しかし、ブロードキャスト レシーバーから同じことを行うと、呼び出し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()

4

1 に答える 1

1

ドキュメントには次のように記載されています。

特に、ダイアログを表示したり、BroadcastReceiver 内からサービスにバインドしたりすることはできません。

starting serviceその問題は約からだと思いbroadcastreceiverます。

于 2012-07-21T10:23:10.767 に答える