服务getExtra从BroadcastReceiver开始返回null

时间:2012-07-21 09:57:23

标签: android service broadcastreceiver android-service

我有一个远程服务,我传递了一些额外的东西。该服务可以从活动或广播接收器开始。当从活动开始时,我传递额外内容和动作,我能够在服务中检索它们。但是当我从广播接收器做同样的事情时,调用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()

时,这是否与特定的广播接收器有关,或者该服务是否已经启动

1 个答案:

答案 0 :(得分:1)

文档说:

  

特别是,您可能无法显示对话框或绑定到服务   在BroadcastReceiver中。

我猜这个问题大约来自starting service的{​​{1}}。