Pregunta

Estoy intentando crear una aplicación que puede utilizar el androide como una máquina de fax, IE Enviar una imagen como un fax o recibir un fax y guardar como una imagen. Hasta ahora estoy empezando desde cero y asegurarse de que pueda interceptar una llamada a discreción del usuario. Tengo un receptor registrado en el Manifiesto de mi programa con un filtro de PHONE_STATE el que las banderas cuando el estado ha cambiado (IE llamada entrante).

Así que en mi BroadcastReceiver estoy tratando de tener una ventana emergente AlertDialog pidiendo al usuario que acepte como fax o llamada, pero el AlertDialog parece arrojar un error android.view.WindowManager $ BadTokenException cuando tiene una llamada entrante. Mi código es sólo una sencilla OnReceive (arg0 contexto, arg1 intención) y pasar el arg0 a la AlertDialog ...

El mensaje de error completo es inferior a

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)

Por lo que he visto en el código AlertDialog, pasa el contexto, así como una ventana y WindowManager, que creo que es por eso que se estrellarse, ¿hay una manera mejor o alguna otra cosa que debería usar que puede superponer la llamada pantalla?

¿Fue útil?

Solución

En primer lugar, no se puede llegar a la pista de audio de la llamada entrante desde Android. Con esta limitación, no tengo ni idea de cómo se va a recibir un fax.

Con respecto a su error, un BroadcastReceiver manifiesta-registrada no es una Activity, por lo que no puede crear un cuadro de diálogo. Se podría, en principio, startActivity() llamada a poner en marcha una Activity (quizás una temática como un cuadro de diálogo), pero no sé si es o no aparecería sobre la pantalla de llamada entrante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top