java - 如何在 Android 中以编程方式查找当前正在运行的应用程序?

标签 java android android-service

我对 Android 很陌生。我正在开发必须获取有关当前在前台运行的应用程序的信息的应用程序。

这意味着如果用户启动任何应用程序,我的应用程序应该在我的应用程序不中断启动的应用程序之前捕获启动的应用程序信息。

示例:如果用户启动浏览器应用程序,我的应用程序应在日志中打印浏览器应用程序信息。

我该怎么做?

最佳答案

ActivityManager activity_manager = (ActivityManager) context
                .getSystemService(Activity.ACTIVITY_SERVICE);

ActivityManager 有方法 getRunningTasks(int)ActivityManager 似乎是您正在寻找的解决方案。

final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> recentTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);

for (int i = 0; i < recentTasks.size(); i++) 
{
    Log.d("Executed app", "Application executed : " +recentTasks.get(i).baseActivity.toShortString()+ "\t\t ID: "+recentTasks.get(i).id+"");         
}

另外,看看以下线程: See Android recent task executed by the user

关于java - 如何在 Android 中以编程方式查找当前正在运行的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091350/

相关文章:

java - JGraph AWT EventQueue 绘制异常(使用多线程)

java - 如何在 JTextPane 中将每个字符设置为不同的颜色/背景颜色?

java - 如何使用 Android 的 X509 公共(public)证书进行加密?

android - 避免取消从最近的应用程序列表中删除应用程序的通知

java - 如何从批处理脚本执行Java代码?

java - JPA:根据实例变量动态地将实体映射到表

android - 更新到 A.S. 后出现错误 :Could not initialize class com. android.ide.common.util.ReadWriteProcessLock 2.4

android - 在我重新启动平板电脑 Asus Transformer 之前,录制的视频在我的其他 Activity 中不可见

java - AIDL 是如何工作的?

android - 从 Activity 启动动态壁纸服务