如何检测特定应用程序已启动?
How can I detect that a particular application has been launched?
背景
有某个应用程序与我的应用程序竞争本应互斥锁定的硬件资源,但实际上没有。硬件资源在 public Android SDK 中没有 API,并且竞争应用预计是唯一需要它的应用。硬件资源的管理固件也希望它一次只能被一个应用程序获取。
问题
硬件资源的冲突在固件中没有得到很好的处理,如果用户在我的应用 运行 时启动竞争应用,我的测试设备通常需要重新启动(我可以检查使用 ActivityManager.getRunningServices() 获取竞争应用程序的服务,如果用户在竞争应用程序为 运行) 时启动我的应用程序,则停止我的应用程序尝试获取硬件资源。
我无权访问竞争应用程序的源代码或系统映像源代码,因此我的应用程序必须负责处理竞争应用程序的不良行为 and/or 固件对该硬件资源的竞争处理不当。
问题
有没有办法让 Android Marshmallow 上的普通(即非系统)应用程序 运行 在应用程序 Activity 或具有已知组件名称的服务时接收回调推出了吗?
Is there a way for a normal (i.e. non-system) app running on Android Marshmallow to receive a callback when an app Activity or Service with a known component name is launched?
没有。事实上,出于隐私和安全原因,Android 5.0+ 竭力向您隐藏其他 运行 应用程序的实时信息。
背景
有某个应用程序与我的应用程序竞争本应互斥锁定的硬件资源,但实际上没有。硬件资源在 public Android SDK 中没有 API,并且竞争应用预计是唯一需要它的应用。硬件资源的管理固件也希望它一次只能被一个应用程序获取。
问题
硬件资源的冲突在固件中没有得到很好的处理,如果用户在我的应用 运行 时启动竞争应用,我的测试设备通常需要重新启动(我可以检查使用 ActivityManager.getRunningServices() 获取竞争应用程序的服务,如果用户在竞争应用程序为 运行) 时启动我的应用程序,则停止我的应用程序尝试获取硬件资源。
我无权访问竞争应用程序的源代码或系统映像源代码,因此我的应用程序必须负责处理竞争应用程序的不良行为 and/or 固件对该硬件资源的竞争处理不当。
问题
有没有办法让 Android Marshmallow 上的普通(即非系统)应用程序 运行 在应用程序 Activity 或具有已知组件名称的服务时接收回调推出了吗?
Is there a way for a normal (i.e. non-system) app running on Android Marshmallow to receive a callback when an app Activity or Service with a known component name is launched?
没有。事实上,出于隐私和安全原因,Android 5.0+ 竭力向您隐藏其他 运行 应用程序的实时信息。