4

通常你会启动这样的服务

Intent i = new Intent(context,MessageService.class);
context.startService(i);

但我想要做的是将在 a 中收到的意图发送BroadcastReceiver到服务。如果我以上面显示的方式启动服务,不会从BroadcastReceiver正确的意图中得到意图?

基本上我只想BroadcastReceiver启动我的服务,然后让服务本身处理接收到的意图

这可能吗?

4

1 回答 1

4

从 BroadcastReceiver 向 Service 发送 Intent:

Intent intent = new Intent(context,MessageService.class);
String value = "String you want to pass";
String name = "data";
intent.putExtra(name, value);
context.startService(intent);

服务方法中的接收者意图onStartCommand

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
    if (intent.getStringExtra("data") != null) {
     {
       String str=intent.getStringExtra("data");//get data here sended from BroadcastReceiver 
     }

    return super.onStartCommand(intent,flags,startId);
}

关于我们如何在 Service 和 BroadcastReceiver 之间进行通信,请参阅这篇文章

于 2012-06-23T04:56:43.243 回答