如何在android中实现app locker?

时间:2011-05-06 06:06:54

标签: android locking

我对Android找到的任何Android应用程序更衣程序不满意,并且我想创建自己的程序,但我无法弄清楚如何实现实际的锁定。如何为Android实施app locker?

有两个问题:

  1. 检测意图,通常来自启动器调用startActivity()或启动市场应用程序的广告(我不是在谈论广播意图 - 我需要处理显式的活动意图)。

    • 我见过的更衣室应用程序的权限都有“读取系统日志文件”和/或“检索正在运行的应用程序”,这表明他们可能会使用轮询来查找应用程序启动。我想我可以做到这一点,但如果可能,我想找到更好的解决方案。
  2. 防止锁定的应用处理意图。在输入密码之前,我宁愿不允许锁定的应用程序运行,因为在启动密码时无法确定它可能会做什么。

    • 当运行我当前的应用程序锁定器时,logcat首先显示“ActivityManager:Starting activity”,其中包含针对锁定应用程序的Intent,然后再显示应用程序锁定器的Intent,两者之间没有任何内容(相隔10-20ms)。如果我输入正确的密码,那么我会看到“ActivityManager:moveTaskToBack”。
    • 我已经尝试过一个测试应用程序,该应用程序演示了如果应用程序被锁定且我没有输入正确的密码,使用我当前的应用程序锁定器,不会调用任何活动回调。所以它似乎阻止了应用程序启动(但我不知道如何)。
    • 我可以使用ActivityManager.killBackgroundProcesses()来停止某个应用,但我无法保证该应用在被“杀死”时尚未开始运行。
    • 我或许可以使用PackageManager.setApplicationEnabledSetting()来阻止应用程序被实例化,但我认为这不会处理已经运行的应用程序(不应该允许处理新的Intent或来到前台)。我或许可以使用killBackgroundProcesses()来停止所有正在运行的锁定进程,因此必须重新实例化它们。但我不喜欢这种方法,因为其他应用程序可能会搞乱启用设置并击败锁定。
    • 最理想的情况是,系统会将每个意图发送到我的应用程序进行检查并允许我停止或让它通过,但我很确定这是不可能的(至少,不是明确的意图从启动器启动活动) )。
  3. 有谁知道app locker应用程序是如何实现的,或者对如何实现它有任何明智的想法?

1 个答案:

答案 0 :(得分:1)

我会调查生命周期。一旦有问题的应用程序开始加载,该包中的某些活动将被添加到最前端活动中。

扫描前沿活动的变化可能会起到作用。

http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle