2013-08-29 62 views
-1

我創建了一個Android應用程序,並且需要讓用戶難以停止應用程序在其啓動過程中產生的主要服務。這是一個有根的Jelly Bean 4.1.2設備。這裏有一些步驟,到目前爲止我已經採取了:如何防止用戶停止Android服務?

  • 安裝爲系統應用
  • 使用設備管理API
  • android:allowClearUserData="false"包括在AndroidManifest。

到目前爲止,我所採取的步驟需要的最正常的方式用戶將停止護理/禁用應用程序/進程;但是,當您在設置 - >應用程序管理器 - >運行中檢查正在運行的應用程序列表時,用戶仍然可以點擊由應用程序啓動的長時間運行的服務上的「停止」按鈕(請參見下圖):

Service from Running Apps

有沒有辦法阻止用戶在這裏停止服務?或者當用戶點擊此停止按鈕時重新啓動服務的最佳方式是什麼?我試着在服務的onDisable()函數中放入一些代碼,但是在這種情況下該函數似乎沒有被調用。

任何幫助,將不勝感激!

+0

作爲一個用戶,我會覺得很煩人。此外,總是有選擇可以卸載應用程序,並在必要時停止使用。 – toniedzwiedz

+0

@Tom:與你同意;但是,這個應用程序不像其他應用程序。這是一個企業的安全應用程序,所以它預計會持續運行。 – jgro

+0

此外,還有一個小問題,但如果一個應用程序是一個系統應用程序,它會使用戶必須根設備來卸載該應用程序。 – jgro

回答

0

有沒有辦法阻止用戶在這裏停止服務?

讓您的應用成爲設備管理員可能會阻止此操作。它絕對阻止了「強制停止」選項。

我試着把一些代碼放在服務的onDisable()函數中,但是這個函數似乎並沒有在這種情況下被調用。

由於Service上沒有onDisable(),所以這並不奇怪。

這是一個企業的安全應用程序,所以它的預期將持續運行。

「企業的安全應用程序」並不需要「持續運行」。

+0

感謝CommonsWare。我的意思是onDestroy(),而不是onDisable()。你說的「強制停止」選項是灰色的,應用程序是設備管理員,但該特定選項仍然可供用戶使用(即使使用設備管理員)。 – jgro

+0

@ user1798667:在這種情況下,我懷疑是否有辦法阻止它。 – CommonsWare

+0

謝謝。在那種情況下,我不會瘋狂地試圖找到一種方法,因爲當初可能沒有辦法將它變灰。 – jgro