我有一个远程服务,我传递了一些额外的东西。该服务可以从 Activity 或广播接收器启动。当从 Activity 开始时,我传递额外的和一个 Action ,我能够在服务中检索它们。但是当我从广播接收器执行相同操作时,调用 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() 都是空的
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()
时服务已经启动
最佳答案
文档说:
In particular, you may not show a dialog or bind to a service from within a BroadcastReceiver.
我想问题出在 broadcastreceiver
的 starting service
上。
关于android - 服务 getExtra 从 BroadcastReceiver 开始返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591187/