2010-08-08 49 views
3

我正嘗試創建一個可以使用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,我相信它是爲什麼它崩潰,有更好的方法或其他我應該使用哪些可能覆蓋呼叫屏幕?

回答

3

首先,您無法從Android獲取通話音頻流。有了這個限制,我不知道你將如何接收傳真。

對於您的錯誤,清單註冊的BroadcastReceiver不是Activity,因此無法創建對話框。原則上,您可以撥打startActivity()啓動Activity(可能只有一個像對話框這樣的主題),但我不知道它是否會出現在通話屏幕上。

+0

關於第一條評論:是的,這是我的想法,我找不到任何文檔。 第二:好吧,我不知道它需要一個活動,只是一個上下文。 感謝您的信息。 – Nicholas 2010-08-08 00:45:33

+0

@Nicholas:對於大多數GUI相關的東西,即使方法簽名只需要一個「Context」,也需要一個「Activity」。 – CommonsWare 2010-08-08 01:04:40

+1

好的,但是你可以做一個沒有人的敬酒,所以我認爲類似於Dialog的東西不需要它。但我沒有檢查出基類對話框,它確實表示它需要一個活動,應該先檢查一下。 – Nicholas 2010-08-08 01:25:00