2016-02-24 38 views
1

出於安全原因,我正在開發應用程序分析用戶行爲。我用這個片段編寫了一個服務,它檢測運行Android OS 4.4的設備中前臺的所有服務,並將它們收集到一個列表中。如何檢測Android 5.0中的前臺服務lollipop

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及以上版本,內置的其他應用程序。 它可能依賴於新的前臺服務策略嗎?

+0

你可以在這裏找到一個可能的解決方案:http://stackoverflow.com/questions/30619349/android-5-1-1-and-above-getrunningappprocesses-returns-my -application-packag –

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