android 监听应用程序启动

标签 android

我在游戏商店看到有一些应用程序可以执行“应用程序锁定”。 在启动应用程序之前,应用程序储物柜应用程序会打开自己的 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/

相关文章:

android - 如何获取屏幕触摸的 x,y 坐标?

android - 如何将使用 Angular v7 的 Web 应用程序迁移到移动 NativeScript 应用程序

android - 打开没有前缀 "http://"的网站 URL

android - 选中删除 RecyclerView 行的复选框会删除其他行

android - 消费者关闭输入 channel 或发生错误

android - 当 View 的父布局是 ConstraintLayout 时,我想要 View cover Button,但这不是我期望的结果

java - Android SDK 录屏?

Android textview html字体大小标签

Textview setText上的Android空指针异常

android - 应用程序在手机和 ripple 中的渲染不同