android - 服务 getExtra 从 BroadcastReceiver 开始返回 null

标签 android service broadcastreceiver android-service

我有一个远程服务,我传递了一些额外的东西。该服务可以从 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.

我想问题出在 broadcastreceiverstarting service 上。

关于android - 服务 getExtra 从 BroadcastReceiver 开始返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591187/

相关文章:

android - FileProvider - 使用默认的内部存储文件夹,文件路径不明确

java - 在if条件中使用分号的目的是什么?

java - 结合使用 LRU 图像缓存和 HTTPResponseCache 进行磁盘和内存缓存

android - 如何获得可靠的 Broadcastreceiver

python - 持续运行 python 脚本

android - 为什么我们不为 BOOT_COMPLETED 事件注册广播接收器

Android - 知道文件何时被重命名

android - 使用加载程序管理器读取联系人

service - 集中式/分布式/面向服务的架构/应用

没有 GUI 的 Android Activity