检测Android应用程序启动包

3

我需要检测应用程序是否已启动,但我读到API中没有任何方法可以实现这一点。有人建议给应用程序授予读取日志的权限并保持轮询,但自JB以来,这种解决方案不起作用。我还发现,由于我只需要知道顶部应用程序是否更改,因此可以执行以下操作:

ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
String str = ((ActivityManager.RunningTaskInfo)am.getRunningTasks(1).get(0)).topActivity.getPackageName();

但是我需要知道哪种方式是最好的进行持续轮询,并且当然,如果有其他方法也可以这样做。


请澄清一下,您是想检测是否启动了特定活动,还是尝试检测所有活动的启动? - Geobits
此外,它是如何“启动”的重要吗?从主屏幕启动、从最近使用的应用程序启动或仅从堆栈中返回都有所不同。 - Geobits
@Geobits 我的应用程序需要监控所有活动/应用程序启动,并且如果我能够检测到它们是从主屏幕或最近使用的应用程序启动,那将是很棒的。 - Vektor88
2个回答

5

你有如何做这个的例子吗?谢谢。 - Jeongbebs

3

应用程序是由人使用的,人们需要时间来阅读屏幕上的信息,因此前台应用程序可见时间少于几秒钟并不常见。

如果您想检测用户启动了哪些应用程序,则可以使用后台服务进行轮询,每秒钟轮询一次以获取您指定的列表,这样就可以正常工作而且不会耗尽电池,因为一旦系统进入睡眠状态,轮询将立即停止。


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