Передать значение из активности в широковещательный приемник и запустить сервис от широковещательного приемника - PullRequest
2 голосов
/ 22 февраля 2012

У меня есть активность.Он содержит кнопку, текст которой изменяется динамически.Я хотел бы передать этот текст на мой приемник, который получает смс.Теперь мой широковещательный приемник должен получить текст, и на основе текста он должен запустить или остановить службу.Как это сделать?

Ответы [ 2 ]

5 голосов
/ 22 февраля 2012

если ваш BroadcastReceiver определен в отдельном файле класса, вы можете просто передать значение этому получателю.Как только значение получено, используйте магию для обслуживания, используя context

Обновление:

в вашей активности:

Intent in = new Intent("my.action.string");
in.putExtra("state", "activated");
sendBroadcast(in);

в вашем приемнике:

@Override
public void onReceive(Context context, Intent intent) {
  String action = intent.getAction();

  Log.i("Receiver", "Broadcast received: " + action);

  if(action.equals("my.action.string")){
     String state = intent.getExtras().getString("state");
     //do your stuff
  }
}

в декларации xml:

<receiver android:name=".YourBroadcastReceiver" android:enabled="true">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        <action android:name="my.action.string" />
        <!-- and some more actions if you want -->
    </intent-filter>
</receiver>
1 голос
/ 22 февраля 2012

Вы можете сделать так, чтобы ваша деятельность отправляла намерение получателю и передавала текст как дополнительный

Intent i= new Intent(this, YourReceiver.class);
i.putExtra("txt", "the string value");
startActivity(i)

А затем в приемнике запустите службу, используя функцию startService

...