Intereting Posts
PopBackStack вызывает вызовы oncreateView фрагмента снова и снова Android – Google Maps api v2 – Отключить управление увеличением Как вызвать веб-службу RESTful с Android? Как сжать базу данных sqlite? Переключение между сетью и провайдером GPS Проверьте, существует ли виджет на рабочем столе с помощью appWidgetId Как я могу убедиться, что мое приложение доступно только для телефонов на Android Market? Медленное или быстрое перетаскивание (прокрутка) с использованием robotium Тесты Android с Gradle: изменение имени выходного файла теста JUnit NullPointerExeption с помощью AppCompat BottomSheets Каковы основные ограничения титана в качестве платформы мобильной разработки? Рассчитайте опору между двумя точками (lat, long) Вкладки вкладки «Фрагмент» и «Нормальные фрагменты» Отмена уведомления об удалении приложения из многозадачной панели Уведомления Parse.com push не всегда работают с получением ошибки «GCM -MISMATCH SENDER ID»

Связь Android между широковещательным приемником и MainActivity (передача данных в действие)

У меня есть простая Основная деятельность, которая должна останавливаться до получения SMS … Как запустить метод из MainActivity в onReceive() BroadcastReceiver ?

Есть ли прочь с сигналом и ждать? Могу ли я передать что-то с ожидающим Intent или как я могу реализовать это сообщение?

Solutions Collecting From Web of "Связь Android между широковещательным приемником и MainActivity (передача данных в действие)"

Коммуникация от BroadcastReceiver to Activity вызывает раздражение; Что, если деятельность уже исчезла?

Если бы я был вами, я бы создал новый BroadcastReceiver внутри Activity, который получил бы сообщение CLOSE:

 private BroadcastReceiver closeReceiver; // ... closeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //EDIT: receiving parameters String value = getIntent().getStringExtra("name"); //... do something with value finish(); } }; registerReceiver(closeReceiver, new IntentFilter(CLOSE_ACTION)); 

Затем из SMS BroadcastReceiver вы можете отправить это действие:

 Intent i = new Intent(CLOSE_ACTION); i.putExtra("name", "value"); //EDIT: this passes a parameter to the receiver context.sendBroadcast(i); 

Надеюсь, это поможет?

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

Самый простой способ использовать его – использовать статические методы и статические переменные

MainActivity.java

 public static void stopsms() { /* some code to stop the activity */ } 

SMSReceiver.java

В конце вызов этой функции

 MainActivity.stopsms(); 

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

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

Это просто, используйте интерфейс:

1) в вашем широковещательном приемнике создайте интерфейс.

 public interface ChangeListener{ public void functionWhoSendData(String type); public void etc(); } 

И создайте этот интерфейс в своем широковещательном приемнике, используйте его:

 public void onReceive(.... String data=functionWhereYouReceiveYouData(); ChangeListener.functionWhoSendData(data); } 

И в своей деятельности, чтобы он реализовал ваш интерфейс