如何在安卓系统中实现应用程序锁?

20

我对我找到的Android应用程序锁定程序都不满意,希望创建自己的程序,但我在实现实际锁定方面遇到了困难。如何在Android上实现应用程序锁定?

问题有两个:

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

    • 我看到的锁定应用程序的权限都有“读取系统日志文件”和/或“检索正在运行的应用程序”,这表明它们可能使用轮询来查找应用程序启动。如果可能,我想找到更好的解决方案。
  2. 防止已锁定的应用程序处理Intent。除非输入密码,否则我不想允许锁定的应用程序运行,因为无法确定它启动时会执行什么操作。

    • 在运行我的当前应用程序锁定程序时,logcat首先显示锁定应用程序的Intent,然后再显示应用程序锁定程序的Intent,中间没有任何内容(间隔时间为10-20ms)。如果我输入正确的密码,那么我会看到“ActivityManager:moveTaskToBack”。
    • 我尝试了一个测试应用程序,证明在锁定应用程序且未输入正确密码的情况下,不会调用任何Activity回调。因此,它似乎防止了应用程序启动(但我不知道如何实现)。
    • 我可以使用ActivityManager.killBackgroundProcesses()来停止一个应用程序,但是我无法保证应用程序在“被杀死”之前没有已经开始运行。
  • 我可以使用PackageManager.setApplicationEnabledSetting() 来防止应用程序被实例化,但我认为这不能解决已经运行的应用程序问题(不应该允许处理新的Intent或前台显示)。我可能可以使用killBackgroundProcesses()停止所有正在运行的被锁定进程,这样它们就必须重新实例化。但我不喜欢这种方法,因为其他应用程序可能会干扰“已启用”设置并打败锁。
  • 理想情况下,系统将把每个Intent发送到我的应用程序进行检查,并允许我停止或放行它,但我很确定这是不可能的(至少对于从启动器启动活动的显式意图而言)。
  • 有人知道应用程序锁定应用程序是如何实现的,或者有什么好主意可以做到吗?


    5
    "应用锁"所使用的技术存在安全漏洞。我正在努力使它们得到修复。 - CommonsWare
    如何在意图级别的锁定机制下隐藏隐藏活动的启动器? - Amit
    @CommonsWare 应用锁定器中有任何应用参考吗? - nida
    @CommonsWare 看起来这些漏洞仍未被修复,因为Play Store上有很多应用锁可供使用。 - Aritra Roy
    1个回答

    1

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接