Я пытаюсь использовать BroadcastReceiver
внутри своей службы, но он не работает должным образом.
Я начинаю свою службу в onCreate в своей деятельности. Затем в сервисах onCreate я вызываю следующее, чтобы зарегистрировать приемник Broadcast:
IntentFilter filter = new IntentFilter();
registerReceiver(DataUpdateReceiver, filter);
Вот широковещательный приемник, который я пытаюсь зарегистрировать:
private BroadcastReceiver DataUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();
}
};
Тогда еще где в Activity я пытаюсь вызвать это, поэтому будет отображаться сообщение Toast.
Intent i = new Intent();
sendBroadcast(i);
Но тост не отображается, я также пробовал вести журнал, но ничего не отображается. Если бы кто-нибудь мог мне помочь в этом, я был бы признателен, ty.
2 ответа
На мой взгляд, вы должны указать действие (или действия), которое запускает метод onReceive()
. Что-то вроде этого может вам помочь:
IntentFilter filter = new IntentFilter("some_action");
registerReceiver(DataUpdateReceiver, filter);
...
Intent i = new Intent("some_action");
sendBroadcast(i);
Объявить на вершине класса
public final static String MY_RECEIVER_START = "com.yourcompanyname.appname.MY_RECEIVER_START";
private Radio radio;
В конструкторе сервиса
//Initiate our receiver
radio = new Radio();
//Activate our recevier
context.registerReceiver(radio, new IntentFilter(MY_RECEIVER_START));
Также в сервисе создайте класс получателя и метод, показывающий тост
/**
* Receiver Class
* This setup checks for the incoming intent action to be able to
* attach more messages to one receiver.
*/
private class Radio extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(MY_RECEIVER_START)){
//show toast
}
}
}
После из любой точки приложения отправьте сообщение на наше радио
context.sendBroadcast(new Intent("com.yourcompanyname.appname.MY_RECEIVER_START"));
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.