有没有办法检查用户是否正在使用Android中的其他应用程序?

问题描述:

我在检查其他应用程序的进程名是否正在运行之前已经取得了一些成功,但是这只会告诉我应用程序最近是否在某个点运行,并且即使屏幕当前处于关闭状态也会返回true 。这次我真的想知道用户是否在屏幕上有特定的应用程序并且正在使用它。有没有办法检查用户是否正在使用Android中的其他应用程序?

那可能吗?谢谢!

+0

[确定从后台任务或服务的当前前台应用程序(HTTP的可能重复:// *.com/questions/2166961/determining-the-current-foreground-application-from-a-background-task-or-service) –

看起来像所有你想做的事可以用ActivityManager类使用其嵌套类实现:

ActivityManager.RunningAppProcessInfo

ActivityManager.RunningServiceInfo

ActivityManager.RunningTaskInfo

ActivityManager.TaskDescription

你需要什么要做的是创建一个分离te服务使用这些类监听其他应用程序事件。我相信有一些方法“getRunningTasks()”,它返回所有正在运行的应用程序的列表,但我认为它现在已被弃用,请搜索类似方法的链接。

不,至少不可靠。

谷歌一直表示,你不应该这样做。就棒棒糖而言,他们正在积极尝试阻止它。 ActivityManager#getRunningTasks(...)在Android 5.0中进行了更改,因此它仅返回有关调用该应用的应用的信息。所以人们开始使用ActivityManager#getRunningAppProcesses(...),但是这在Android 5.1.1和6.0中同样受到限制。

获取有关其他正在运行的应用程序的信息的唯一方法是使用统计API。但是该API需要一个只能通过系统活动交互授予的权限,而不是在应用程序的清单中。并且文档指出系统活动可能不在所有设备上。从其至少一些设备中删除它的制造商包括三星和LG。

基本上,除了一些新的黑客的发现,第三方应用储物柜历史的Android 6.