我在游戏商店看到有些应用程序可以锁定应用程序"。 在启动应用程序之前,应用程序更衣室应用程序会打开它自己的活动并要求输入密码。 起初我认为它听取了发射器发送的一些广播,但是当我通过网络阅读时,它是不可能的。 我看到其他人询问它,他们建议嗅探logcat并寻找一个"开始活动"记录,但听起来不错...... 其他选择是循环包管理器的getInstalledApps并始终获取第一个应用程序(这意味着它是前台的应用程序),然后可能启动我的活动。
所以,我想知道这些应用程序是如何工作的?他们是使用框架API还是一些低级系统API。
感谢。
答案 0 :(得分:2)
这种应用程序在后台运行服务并连续检查循环中的顶级活动(或短暂延迟,如100毫秒)。如果顶级运行活动的软件包与let' s说lockerapp不同,它会启动它自己的pin活动。
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = activityManager.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;