java - 如何在Android 5.0 Lollipop 中检测前台服务

标签 java android foreground-service

出于安全原因,我正在开发一个分析用户行为的应用程序。我用这个代码 fragment 编写了一个服务,它检测运行 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 的服务前台 以及为此 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;
         }

关于java - 如何在Android 5.0 Lollipop 中检测前台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599224/

相关文章:

java - Spring 安全 : Java Config: How to add the method type?

Java 3D LWJGL 碰撞

java - 使用 Java 中的 BigDecimal(或其他类)获得更高的精度

java - 如何向 Android 启动器添加自定义图标主题支持

android - Firebase Crashlytics 仅显示调试版本的崩溃

java - 如何将时间戳值限制为秒?

java - 火力地堡用户界面 3.0.0 : Retrieve data to recycle view

android - 后台服务和前台服务有什么区别?

android - 如何每 5 分钟运行一个前台服务 10 秒?

android - Context.startForegroundService() ANR,但没有实际调用它