Регистрация приемника вещания для android.intent.action.NEW_OUTGOING_CALL и спросить пользователя, что делать? - PullRequest
3 голосов
/ 22 февраля 2012

Я знаю, как реализовать BroadcastReceiver, который уведомляет о начале нового исходящего вызова.Я также знаю, как в конечном итоге отбросить вызов и обработать его в приложении.

Что я хотел бы знать, так это достоверно спросить пользователя, отбрасывать его или нет?Насколько я знаю, у приложения есть ограниченное количество времени для возврата из RroadcastReceiver.Как долго это время?

Вы когда-нибудь реализовывали это?

РЕДАКТИРОВАТЬ

Пытаясь реализовать это, я понимаю, что есть большая проблема.В BroadcastReceiver вы не можете показать диалог.Форма документа:

В частности, вы не можете показывать диалог или привязку к услуге из BroadcastReceiver.Для первого вы должны вместо этого использовать API NotificationManager.Для последнего вы можете использовать Context.startService() для отправки команды службе.

Причина в том, что вы не можете выполнить AsyncTask.Я думал, что собираюсь использовать сигналы для его реализации, но вы не можете сделать это, потому что вещательный приемник запущен в главном потоке, и вы не можете заставить его ждать ...

Это правильно?

1 Ответ

0 голосов
/ 16 октября 2012

Насколько я знаю, у приложения ограниченное количество времени для возврата из BroadcastReceiver.Как долго это время?

Формально это время составляет около 5 секунд - через 5 секунд.в то время как системный поток не может обрабатывать системные сообщения, Android должен вызвать диалоговое окно ANR (приложение не отвечает) и принудительно закрыть ваше приложение.Более общий - метод BroadcastReceiver onReceive() должен завершиться как можно скорее.

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

...