【问题标题】:Service getExtra returns null with started from BroadcastReceiver服务 getExtra 从 BroadcastReceiver 返回 null
【发布时间】:2012-07-21 09:57:22
【问题描述】:

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

【问题讨论】:

    标签: android service broadcastreceiver android-service


    【解决方案1】:

    文档说:

    特别是,您不能显示对话框或绑定到来自 在广播接收器中。

    我猜这个问题出在starting servicebroadcastreceiver 之间。

    【讨论】:

    • 我没有从广播接收器绑定到服务,我只是在启动它。该服务正确启动并正在运行,只是没有获得操作或附加功能。基本上我使用的是动作/附加功能,所以服务知道它是从活动还是接收器启动的,所以它可以在每种情况下采取不同的行动。
    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多