4

通常、このようなサービスを開始します

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

しかし、私がやりたいのは、で受信したインテントをBroadcastReceiverサービスに送信することです。上記の方法でサービスを開始した場合、BroadcastReceiver正しいものからインテントを取得できませんか?

BroadcastReceiver基本的には、サービスを開始してから、サービス自体にどのようなインテントを受け取ったかを処理させたいだけです。

これは可能ですか?

4

1 に答える 1

4

BroadcastReceiverからServiceに次のようにインテントを送信します。

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 に答える