出于安全原因,我正在开发一个用于分析用户行为的应用程序。我使用此代码段编写了一项服务,该服务可在运行Android OS 4.4
的设备中检测前台的所有服务并将其收集在列表中。
List<ActivityManager.RunningServiceInfo> l = activityManager.getRunningServices(50);
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
while (i.hasNext()) {
ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i.next();
if (runningServiceInfo.foreground) {
newList.add(runningServiceInfo.service.getClassName());
}
}
我曾经在具有
Android OS 5.0
的设备上尝试过此操作,但我发现它无法检测到前台的服务,例如runtastic's service foreground
以及为此版本SDK和更高版本构建的其他应用。能否依靠新的前台服务政策?
最佳答案
请试试:
String topActivityName = "";
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
List<ActivityManager.RunningAppProcessInfo> processInfos = manager.getRunningAppProcesses();
if (processInfos == null || processInfos.isEmpty()) {
isRunningInForeground = false;
}
topActivityName = processInfos.get(0).processName;
}