我正嘗試創建一個可以使用android作爲傳真機的應用程序,IE將圖片作爲傳真發送或接收傳真並另存爲圖片。到目前爲止,我從頭開始並確保我可以根據用戶的判斷攔截呼叫。我有一個Receiver在我的程序清單中註冊了一個Phone_State過濾器,它在狀態發生變化時(IE來電)標記。BroadcastReceiver中的AlertDialog
所以在我的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看到代碼,它傳遞的上下文以及一個窗口和WindowManager,我相信它是爲什麼它崩潰,有更好的方法或其他我應該使用哪些可能覆蓋呼叫屏幕?
關於第一條評論:是的,這是我的想法,我找不到任何文檔。 第二:好吧,我不知道它需要一個活動,只是一個上下文。 感謝您的信息。 – Nicholas 2010-08-08 00:45:33
@Nicholas:對於大多數GUI相關的東西,即使方法簽名只需要一個「Context」,也需要一個「Activity」。 – CommonsWare 2010-08-08 01:04:40
好的,但是你可以做一個沒有人的敬酒,所以我認爲類似於Dialog的東西不需要它。但我沒有檢查出基類對話框,它確實表示它需要一個活動,應該先檢查一下。 – Nicholas 2010-08-08 01:25:00