Передать значение из активности в широковещательный приемник и запустить сервис от широковещательного приемника

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

Ответы на вопрос(2)

Решение Вопроса

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

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

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

 xyzandroid22 февр. 2012 г., 08:00
startActivity используется для передачи значения в активность. Я хотел бы передать значение из действия получателю
Решение Вопроса

то вы можете просто передать значение этому получателю. Как только значение получено, используйте магию для обслуживания, используя приемник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>
 xyzandroid22 февр. 2012 г., 08:03
Эта строка может быть чем угодно? или я должен пройти какое-то действие, которое используется в манифесте?
 xyzandroid22 февр. 2012 г., 07:58
у меня есть 3 отдельных класса для моей деятельности, получателя и обслуживания. я попытался отправить значение из моей деятельности, используя Intent in = new Intent (); Bundle bun = new Bundle (); bun.putString ("состояние", "активировано"); in.putExtras (bun); sendBroadcast (в); - теперь, как получить это, используя широковещательный приемник.
 waqaslam22 февр. 2012 г., 08:04
строка может быть чем угодно, но она также должна быть определена внутри вашего манифеста в разделе фильтра намерений вашего получателя
 xyzandroid22 февр. 2012 г., 08:09
но мой получатель уже содержит <action android: name = "android.provider.Telephony.SMS_RECEIVED"> </ action> .. может ли получатель иметь два действия? Я новичок в Android. пожалуйста, объясните
 waqaslam22 февр. 2012 г., 08:02
BroadcastReceiver работает надействие Строка, определенная внутри намерений. Таким образом, вы должны определить это тоже перед передачей, например,in.setAction("my.action.string"); и поймать эту строку действия в приемнике с помощьюintent.getAction(), Убедитесь, что ваш приемник имеетmy.action.string определены в егоНамерение фильтр раздел

Ваш ответ на вопрос