我在游戏商店看到有一些应用程序可以执行“应用程序锁定”。 在启动应用程序之前,应用程序储物柜应用程序会打开自己的 Activity 并要求输入密码。 起初我以为它会监听启动器发送的一些广播,但当我在网上阅读时,这是不可能的。 我看到其他人在问这个问题,他们建议嗅探 logcat 并寻找“启动 Activity ”日志,但这听起来像是一个坏主意...... 其他选项是循环包管理器的 getInstalledApps 并始终获取第一个应用程序(这意味着它是前台的应用程序),然后可能启动我的 Activity 。
那么,我想知道这些应用程序是如何工作的?他们使用的是框架 API 还是一些低级系统 API。
谢谢。
最佳答案
此类应用程序在后台运行服务,并连续检查循环中的顶级 Activity (或短暂延迟,如 100 毫秒)。如果顶部运行的 Activity 的包与 Lockerapp 不同,它会启动自己的 pin Activity。
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = activityManager.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
关于android 监听应用程序启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25260040/