Ian*_*Ian
20
android
locking
我对我找到的任何Android应用程序更衣程序不满意,并且我想创建自己的程序,但我无法弄清楚如何实现实际的锁定.如何为Android实施app locker?
有两个问题:
检测Intent,通常来自发射器调用startActivity()或启动市场应用程序的广告(我不是在谈论广播意图 - 我需要处理显式的Activity Intents).
- 我见过的更衣室应用程序的权限都有"读取系统日志文件"和/或"检索正在运行的应用程序",这表明他们可能会使用轮询来查找应用程序启动.我想我可以这样做,但如果可能的话,我想找到更好的解决方案.
防止锁定的应用程序处理意图.在输入密码之前,我宁愿不允许锁定的应用程序运行,因为它无法分辨启动时它可能会做什么.
- 在运行我当前的应用程序锁定器时,logcat首先显示"ActivityManager:Starting activity",其中包含针对锁定应用程序的Intent,然后再显示应用程序锁定器的Intent,两者之间没有任何内容(相隔10-20ms).如果我输入正确的密码,那么我会看到"ActivityManager:moveTaskToBack".
- 我已经尝试了一个测试应用程序,该应用程序演示了如果应用程序被锁定且我没有输入正确的密码,使用我当前的应用程序锁定器,不会调用任何活动回调.所以它似乎阻止了应用程序启动(但我不知道如何).
- 我可以使用ActivityManager.killBackgroundProcesses()来停止应用程序,但我无法保证应用程序在被"杀死"时尚未开始运行.
- 我可能能够使用PackageManager.setApplicationEnabledSetting()来阻止应用程序被实例化,但我认为这不会处理已经运行的应用程序(不应该允许处理新的Intent或来到前景).我或许可以使用killBackgroundProcesses()来停止所有正在运行的锁定进程,因此必须重新实例化它们.但我不喜欢这种方法,因为其他应用程序可能会搞乱启用设置并打败锁定.
- 最好的情况是,系统会将每个Intent发送到我的应用程序进行检查,并允许我停止或让它通过,但我很确定这是不可能的(至少,不是明确的意图从启动器启动活动).
有谁知道app locker应用程序是如何实现的,或者对如何实现它有任何明智的想法?