2017-01-15 50 views
0

我正在開發一款應用程序,並且此應用程序需要在某些事件發生時向用戶發出明確指示。Android:如何在手機處於睡眠狀態時開始活動,類似於Viber接收呼叫活動

直到現在我只能做的事情是在通知區域發出通知。但是,我需要提供更明顯的通知,類似於電話在來電時響鈴的行爲。

據我所知,android只允許應用程序發出通知的原因是爲了防止應用程序干擾用戶。但是,我正在開發的這個應用程序在用戶的工作中起着至關重要的作用,所以我認爲不應該給出如此強烈的通知。

我知道它應該是可行的,因爲像Viber這樣的應用程序可以開始類似於傳入電話的活動,即使設備正在睡覺。

有誰知道如何做到這一點?

回答

1

只需添加一個粘性服務(它什麼都不做)就解決了這個問題。添加服務可防止用戶退出應用程序並將其從最近的應用程序列表中刪除時終止進程。

由於該服務,即使沒有UI可見,應用程序進程也在運行。在此狀態下,如果GCM服務顯示活動,則會顯示該活動。

1

註冊的廣播接收器,並添加自定義動作將其說CustomAction。相反顯示通知,拋出一個廣播,並通過意圖過濾器添加CustomAction。 現在廣播聽衆的onReceive方法,檢查 如果(intent.getAction.equals(「CustomAction」))Intent i = new Intent(context, YourActivity); context.startActivity(i);

對不起,我不是一個格式化的回答,我在開車,稍後將更新更多的澄清。

更新

在粘滯服務註冊廣播接收器。因此,如果殺死並重新註冊廣播寄存器,該服務可以自動啓動。 不要忘記在onDestroy()服務方法和YourActivity註銷廣播接收器,當您的目的已解決。

+0

感謝您的答案,並按預期工作。您能解釋爲什麼在廣播接收器中創建的新活動會顯示,但在GCM偵聽器服務中創建的新活動(我先前顯示通知的位置)在應用當前未運行時未顯示? –

+0

我不太確定,但應用程序有可能被殺害。在這種情況下,在啓動活動時,您必須有意設置類別Activity_Launcher。 –

0

你可以像Vinay提到的那樣觸發一個broascast。如果它仍然不起作用,請嘗試使用喚醒鎖。這些喚醒鎖在睡眠模式下有助於喚醒設備。它將像強制喚醒一樣行動,在喚醒鎖後,您可以執行您的操作。

希望它有幫助..

謝謝。

相關問題