Подтвердить что ты не робот

Android Broadcast от службы к действию

Я пытаюсь отправить трансляцию из службы в Activity. Я могу проверить, что трансляция отправляется из службы, но Activity ничего не подбирает.

Вот соответствующий код службы:

   Intent i = new Intent(NEW_MESSAGE);  
   i.putExtra(FriendInfo.USERNAME, StringUtils.parseBareAddress(message.getFrom()));
   i.putExtra(FriendInfo.MESSAGE, message.getBody());
   i.putExtra("who", "1");
   sendBroadcast(i);

И принимающая сторона в классе активности:

public class newMessage extends BroadcastReceiver 
{
@Override
   public void onReceive(Context context, Intent intent) 
   {    
    String action = intent.getAction();
       if(action.equalsIgnoreCase(IMService.NEW_MESSAGE)){    
          Bundle extra = intent.getExtras();
          String username = extra.getString(FriendInfo.USERNAME);   
          String message = extra.getString(FriendInfo.MESSAGE);
          String who = extra.getString("who");
         }
   }
}

BroadcastReceiver определяется внутри Activity. Я регистрирую приемник в методе onCreate Activity, а не в файле Manifest.

Я в тупике, почему это не будет. что-нибудь.

Любое понимание?

ИЗМЕНИТЬ
Регистрация происходит следующим образом:

 registerReceiver(messageReceiver, new IntentFilter(IMService.NEW_MESSAGE));

Где "messageReceiver" определяется как

private newMessage messageReceiver = new newMessage();

IMService.NEW_MESSAGE - это просто строка = "NewMessage"

4b9b3361

Ответ 1

Я не уверен, что он специфичен для настройки, или если это вообще исправление, но перемещение register/unregister в onResume/onPause _respectively_ и отсутствие регистрации в onCreate проблема для меня.

Ответ 2

Попробуйте две вещи:

  • Использовать файл манифеста для регистрации приемника (но он едва помогает)
  • Попробуйте сделать ваш приемник обычным классом, а не внутренним.

Ответ 3

Внутренний широковещательный приемник не сможет обрабатывать широковещательную рассылку (означает, что он не может найти этот класс). Поэтому сделайте это как отдельный класс

Определенно это сработает.