通常,您可以启动此类服务
Intent i = new Intent(context,MessageService.class);
context.startService(i);
但我想要做的是将BroadcastReceiver
中收到的意图发送给服务。如果我按照上面显示的方式启动服务,不会从BroadcastReceiver
获得正确的意图?
基本上我只是希望我的BroadcastReceiver
启动我的服务,然后让服务本身处理收到的意图
这可能吗?
答案 0 :(得分:4)
将Intend从BroadcastReceiver发送到服务:
Intent intent = new Intent(context,MessageService.class);
String value = "String you want to pass";
String name = "data";
intent.putExtra(name, value);
context.startService(intent);
Reciver Intent in 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之间进行通信,请参阅this post