AlertDialog в BroadcastReceiver - PullRequest
       26

AlertDialog в BroadcastReceiver

3 голосов
/ 08 августа 2010

Я пытаюсь создать приложение, которое может использовать андроид в качестве факсимильного аппарата, т.е. отправить изображение в виде факса или получить факс и сохранить в виде изображения.Пока что я начинаю с нуля и проверяю, могу ли я перехватывать вызов по усмотрению пользователей.У меня зарегистрирован Receiver в Манифесте моей программы с фильтром Phone_State, который помечает, когда состояние изменяется (входящий вызов IE).

Так что на моем BroadcastReceiver я пытаюсь получить всплывающее окно AlertDialog, запрашивающееПользователь принимает или как факс, или как звонок, но AlertDialog, похоже, выдает ошибку android.view.WindowManager $ BadTokenException при входящем звонке.Мой код просто onReceive (контекст arg0, намерение arg1), и я передаю arg0 в AlertDialog ...

Полное сообщение об ошибке ниже

08-08 00:16:14.315: ERROR/AndroidRuntime(275): java.lang.RuntimeException: Unable to start receiver com.android.fax.IncomingFax: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
08-08 00:16:14.315: ERROR/AndroidRuntime(275):     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2550)
08-08 00:16:14.315: ERROR/AndroidRuntime(275):     at android.app.ActivityThread.access$3000(ActivityThread.java:116)
08-08 00:16:14.315: ERROR/AndroidRuntime(275):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1843)

Из того, что у меня естьв коде AlertDialog он передает контекст, а также Window и WindowManager, который, по моему мнению, является причиной его сбоя, есть ли лучший способ или что-то еще, что я должен использовать, который может перекрывать экран вызова?

1 Ответ

3 голосов
/ 08 августа 2010

Во-первых, вы не можете добраться до аудиопотока во время разговора с Android.С этим ограничением я понятия не имею, как вы собираетесь получать факс.

Что касается вашей ошибки, зарегистрированный манифест BroadcastReceiver не является Activity, и поэтому он не может создать диалоговое окно.,В принципе, вы могли бы позвонить startActivity(), чтобы запустить Activity (возможно, тему, похожую на диалог), но я не знаю, появится ли она на экране вызова.

...