解決“鬧鐘在通話時不彈出,結束通話後彈出”的問題

     在Android2.3中,當鬧鐘響起後,AlarmReceiver會收到從底層發出的ALARM_ALERT_ACTION的消息,然後起一個文件名叫AlarmKlaxon的service,以及我們所看到的鬧鐘界面AlarmAlertFullScreen的Activity。在這個Activity執行onResume的時候,判斷是否爲通話中,判斷方法如下:

然後再onResume函數中進行判斷,如果處於通話狀態,將此Task一道後臺,代碼如下:


在後臺的Service中啓動一個監聽器,監聽手機掛斷的動作,如果用戶通話結束,此時會發送一個廣播消息,用AlarmReceiver來接收這個消息:


當AlarmReceiver收到這個廣播後:

我用的是2.3版本的SDK,沒有嘗試另外一種方法,3.0以上Android支持ActivityManager.moveTaskToFront()函數。用這個函數應該也可以,如果用這個函數,代碼如下:

這樣當通話結束後,之前移到後臺的ALARM又會被用戶看到。如果有更好的實現方式可以留言討論,謝謝~


發佈了16 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章