有没有办法获取所有可用操作系统的当前正在运行的前台应用程序(包)?

5

我知道,这个话题已经引起了太多的问题,但是并不支持所有操作系统/设备

问题

  1. 是否有任何方法可以获取当前正在运行的前台应用程序(包)适用于所有可用的操作系统
  2. AppLock如何工作(如何检测任何应用程序的启动)?

我尝试过的(但失败了)

  1. 如何检测Android应用程序是否已启动? - Google在Android L中禁用了此功能。
  2. 如何使用UsageStatsManager? - android.permission.GET_TASKS被弃用了。
  3. 如何使我的应用程序成为设备所有者? - 无法以编程方式执行此命令。
  4. Knox Standard SDK

我想要的

  • 用户不应该能够访问黑名单应用程序。我的应用程序应在黑名单应用程序的前面启动(AppLock相同
  • 用户只能访问白名单中的应用程序。
  • 我尝试了许多解决方案,但无法获得可以在所有可用的操作系统/设备上工作的完美解决方案。
  • 我希望以编程方式/免费/适用于每个设备和操作系统的解决方案

1
它是如何检测任何应用程序启动的?有人知道如何在任何应用程序启动时触发它吗?是否有接收器可用? - Narender Reddy
1个回答

1
你可以有两种方法来解决这个问题,否则你可能就没有办法了。
1)将你的应用作为“启动器”应用。用户将与你的应用交互以启动应用程序。通知启动和其他类型的交互可能无法跟踪,但我还没有尝试过。
2)让你的应用程序“假装”是一个启动器应用程序。它启动后显示一个启动器类型的屏幕。然后,您需要通过检查您的应用是否在后台并将其带入前台来处理按“主页”的尝试。这不是一项容易的任务——你可能会有错误等等,但它似乎是可能的(我只知道确定你的应用是否“在后台”可能很棘手,因为对话框和通知可以占据前景,但你不想解除那些(大多数情况下我认为)。
祝好运!

1
明白了。但是我仍然有一个问题困扰着我,就是AppLock是如何做到这一点的(它如何在黑名单应用程序前启动其锁定活动)?那个解决方案可以解决我的问题:( - Dhruv Patel
我认为AppLock就像排名第二...但在任何情况下,你可以控制当用户点击图标时启动什么。你不必启动出现在屏幕上的应用程序,因为你控制屏幕。 - Jim
是的,没错。我只有第二个选项。谢谢。 - Dhruv Patel

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