2012-08-08 109 views
4

我想弄清楚如何防止用戶使用強制停止來殺死應用程序。我試圖檢測用戶何時打開諸如「設置 - 應用程序 - 管理應用程序」之類的活動並嘗試強制停止受保護的應用程序。還有一些任務管理器應用程序允許你殺死進程。防止用戶在Android上殺死應用程序

我知道它可能在Android中,因爲像AppLock或Super AppLock這樣的應用程序可以做到這一點。我找不到任何有關如何操作的信息。

現在我正在嘗試輪詢ActivityManager.RunningTaskInfo來檢測受限制的活動,但由於它們在不同設備上具有不同的名稱,所以效果不佳。

有沒有更好的方法來做到這一點? AppLock和類似的應用程序如何實現此功能?

+0

我認爲只有系統應用程序被允許阻止。即。與ROM – 2012-08-08 14:53:41

+0

一起安裝AppLock或Super AppLock,它們是否在非根設備上工作?你嘗試過嗎?另一個可能的提示是你的應用程序是DeviceAdmin。 http://developer.android.com/guide/topics/admin/device-admin.html – Maxim 2012-08-08 14:56:25

+0

我已經嘗試過我的手機上超級應用程序鎖(標準無根),它工作正常。當我嘗試訪問任務管理器應用程序或通過設置/管理應用程序強制停止應用程序時,會出現一個屏幕,要求我輸入解鎖代碼。 – 2012-08-08 17:10:16

回答

0

我想我想通了。

使用ActivityManager.getRunningTasks()函數似乎是最好的解決方案。 然後,您只需在每次頂部任務是「com.android.settings.applications.RunningServiceDetails」或「com.android.settings.applications.InstalledAppDetails」時彈出一個活動(使用PIN碼)。

不幸的是,沒有辦法查看用戶是否試圖殺死受保護的應用程序或其他應用程序,因此訪問權限僅限於其中的所有應用程序。

市面上還有一些使用ActivityManager.killBackgroundProcesses()方法殺死進程的任務管理器,但您可以通過使用警報來恢復應用程序。

+0

這是否意味着您經常需要使用'ActivityManager.getRunningTasks()'進行輪詢?這是否有很多開銷?我也很好奇所有這些應用程序鎖定類型的應用程序如何做,尤其是,因爲您無法再閱讀其他應用程序的LogCat。 – 2013-10-12 02:33:13

2

Quite similar and relevant question已被詢問並回復。

長話短說,不,你不能由於內存管理阻止用戶或操作系統關閉應用程序。

+0

超級AppLock可以以某種方式做到這一點...... – 2012-08-08 17:12:59

相關問題