1

I'm developing an app profiling user behavior for security reasons. I wrote a service with this snippet, that detects all services in foreground in a device running Android OS 4.4 and collects them in a list.

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());
    }
}

I tried this once on a device with Android OS 5.0 and I noticed that it doesn't detect services in foreground, like runtastic's service foreground and other apps built for this SDK version and above. Could it depend on new foreground services policy?

johnny_kb
  • 694
  • 9
  • 27
  • You can find a possible solution here: http://stackoverflow.com/questions/30619349/android-5-1-1-and-above-getrunningappprocesses-returns-my-application-packag – Claudio Feb 24 '16 at 13:16
  • 1
    Maybe I have not made myself clear: I'm interested only in foreground services, not activities in foreground. – johnny_kb Feb 24 '16 at 13:50

1 Answers1

0

Please try:

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;
         }