Java 如何在Android 5.0棒棒糖中检测前台服务

Java 如何在Android 5.0棒棒糖中检测前台服务,java,android,foreground-service,Java,Android,Foreground Service,出于安全原因,我正在开发一个分析用户行为的应用程序。我用这段代码编写了一个服务,它检测运行androidos4.4的设备中前台的所有服务,并将它们收集到一个列表中 List<ActivityManager.RunningServiceInfo> l = activityManager.getRunningServices(50); Iterator<ActivityManager.RunningServiceInfo> i = l.iterator(); while (i

出于安全原因,我正在开发一个分析用户行为的应用程序。我用这段代码编写了一个服务,它检测运行
androidos4.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());
    }
}
List l=activityManager.getRunningServices(50);
迭代器i=l.迭代器();
while(i.hasNext()){
ActivityManager.RunningServiceInfo RunningServiceInfo=(ActivityManager.RunningServiceInfo)i.next();
if(runningServiceInfo.前台){
添加(runningServiceInfo.service.getClassName());
}
}
我曾在装有
Android OS 5.0
的设备上尝试过这一点,我注意到它没有检测到前台的服务,比如
runtastic的前台服务
以及为该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;
         }
字符串topActivityName=“”;
if(Build.VERSION.SDK\u INT>Build.VERSION\u code.KITKAT\u WATCH){
List processInfos=manager.getRunningAppProcesses();
if(processInfos==null | | processInfos.isEmpty()){
IsRunningForeground=false;
}
topActivityName=processInfos.get(0).processName;
}
请尝试:

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;
         }
字符串topActivityName=“”;
if(Build.VERSION.SDK\u INT>Build.VERSION\u code.KITKAT\u WATCH){
List processInfos=manager.getRunningAppProcesses();
if(processInfos==null | | processInfos.isEmpty()){
IsRunningForeground=false;
}
topActivityName=processInfos.get(0).processName;
}

您可以在这里找到一个可能的解决方案:可能我没有明确表示:我只对前台服务感兴趣,而不是前台活动。您可以在这里找到一个可能的解决方案:可能我没有明确表示:我只对前台服务感兴趣,而不是前台活动。