0

有什么方法可以知道任何应用程序何时从后台到前台,反之亦然?我需要某种机制让我自己的应用程序知道设备中安装的任何应用程序从后台转到前台(主屏幕)或从后台转到前台。

4

2 回答 2

0

出于安全原因,我认为这在 Android 中是不可能的。如果您想查看应用程序何时启动,您必须创建一个自定义启动器。

即便如此,我一直在寻求这样做一段时间,而我最接近类似功能的方法是监控正在运行的应用程序,如下所示:

ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningTasks = activityManager.getRunningAppProcesses();

因此,如果

runningTasks.get(0).importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND

那么该任务在前台(如果不是,那么它在后台)。

于 2012-08-21T18:18:29.977 回答
0

为了检查我的应用程序是否在前台,我使用了以下代码:

  public static boolean isAppInForeground(Context context) {
  List<RunningAppProcessInfo> appProcesses = ((ActivityManager) context
    .getSystemService(Context.ACTIVITY_SERVICE)).getRunningAppProcesses();
  if (appProcesses == null) {
  return false;
  }
  final String packageName = context.getPackageName();
  for (RunningAppProcessInfo appProcess : appProcesses) {
    if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND
        && appProcess.processName.equals(packageName)) {
      return true;
    }
  }
  return false;
}
于 2012-08-21T18:20:52.633 回答