Как получить намерение, отправленное службой - PullRequest
0 голосов
/ 20 июля 2011

У меня возникли проблемы с отправкой Намерения из Сервиса в Активность. Вот код:

Intent intent = new Intent(context,
MessagingActivity.NewMessageReceiver.class);
intent.setAction(XMPPService.NEW_MESSAGE);
intent.putExtra("MESSAGE", body);
intent.putExtra("FROM", from);
context.sendBroadcast(intent);

контекст - это Сервис Код получателя (это внутренний класс в деятельности):

public class NewMessageReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if (intent.getAction().equals(XMPPService.NEW_MESSAGE))
        {
            String message = intent.getStringExtra("MESSAGE");
            String from = intent.getStringExtra("FROM");
            // TODO: add screen switch
            addMessage(true, from, message);
        }
    }
}

Запись манифеста Android:

<receiver 
    android:name=".MessagingActivity.NewMessageReceiver">
    <intent-filter>
        <action android:name="com.someapp.XMPPService.NEW_MESSAGE"/>
    </intent-filter>
</receiver>

Проблема в том, что, хотя намерение отправлено, метод onReceive () не вызывается.

Спасибо, Иван.

1 Ответ

0 голосов
/ 20 июля 2011

Попробуйте это

Intent intent = new Intent(XMPPService.NEW_MESSAGE);
intent.putExtra("MESSAGE", body);
intent.putExtra("FROM", from);
sendBroadcast(intent);

В действии

IntentFilter filter = new IntentFilter(XMPPService.NEW_MESSAGE);


    BroadcastReceiver   mReceiver = new MessageReceiver(getApplicationContext());
        registerReceiver(mReceiver, filter);
...