1

出于安全原因,我正在开发一个分析用户行为的应用程序。我用这个片段编写了一个服务,它检测正在运行的设备中前台的所有服务,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 版本及更高版本构建的其他应用程序。它能否依赖于新的前台服务政策?

4

1 回答 1

0

请试试:

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;
         }
于 2016-06-17T07:21:43.023 回答