2012-08-08 81 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

相关问题