2012-06-23 2 views
3

Обычно запуск службы, как этогоОтправка BroadcastReceiver намерения службы

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

но то, что я хочу сделать, это отправить намерение, которое было получено в BroadcastReceiver к службе. Если я начну службу, то способ, показанный выше, не соответствует правилу BroadcastReceiver?

В основном я просто хочу, чтобы мои BroadcastReceiver начать свою службу, а затем пусть сам сервис обращаться, какие намерения были получены

это возможно?

+0

Я полагаю, что вы спрашиваете, можете ли вы передать тот же намерение, который вы получили в БР, чтобы начать Службу, не так ли? –

ответ

4

Отправить Intent из 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 Намерение в 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); 
} 

за то, как мы общаемся между службой и BroadcastReceiver см this post

+0

Я думаю, что «намерение намерения» должно быть «Intent intent2open» для вашего кода для компиляции. Я прав? –

Смежные вопросы