我在检查其他应用程序的进程名称是否正在运行之前已经取得了一些成功,但这只会告诉我该应用程序最近是否在某个时刻运行,并且即使屏幕也会返回true目前正在关闭。这次我想知道用户是否在屏幕上拥有特定的应用程序并积极使用它。
那会不可能?谢谢!
答案 0 :(得分:0)
看起来你想要做的就是使用ActivityManager类使用它的嵌套类来实现:
ActivityManager.RunningAppProcessInfo
ActivityManager.RunningServiceInfo
ActivityManager.RunningTaskInfo
ActivityManager.TaskDescription
您需要做的是创建一个单独的服务,使用这些类来侦听其他应用程序事件。我相信有一些方法“getRunningTasks()”返回所有正在运行的应用程序的列表,但我认为它现在已被弃用,搜索类似方法的链接。
答案 1 :(得分:0)
不,至少不可靠。
Google一直声明你不应该这样做。截至棒棒糖,他们正在积极努力防止它。在Android 5.0中更改了ActivityManager#getRunningTasks(...)
,因此它只返回有关调用它的应用的信息。所以人们开始使用ActivityManager#getRunningAppProcesses(...)
,但在Android 5.1.1和6.0中也同样受到限制。
获取有关其他正在运行的应用程序的信息的唯一受制裁方式是使用Usage Stats API。但该API需要一个权限,该权限只能通过系统活动以交互方式授予,而不是在应用程序的清单中。并且文档指出系统活动可能不存在于所有设备上。从至少部分设备中删除它的制造商包括三星和LG。
基本上,除非发现一些新的黑客攻击,否则第三方应用程序储物柜就像Android 6一样。