2017-02-15 1 views
0

현재 안드로이드 UsageStats을 사용하여 서비스의 안드로이드에서 현재 포 그라운드 애플리케이션을 얻고 있습니다. 그러나 어떤 앱에서 알림을 받으면 내 앱은 다른 앱이 포 그라운드에 있다고 생각합니다. "휴, 그 타입에 비틀 거 렸어."Android에서 포 그라운드 응용 프로그램을 얻는 방법; 알림 제외

기본적으로 모든 알림을 제외한 현재 포 그라운드 응용 프로그램을 얻는 방법이 필요합니다.

알아 들었어? 감사!

편집 :

내 요청 내 현재의 방법으로 할 수없는 경우, 내 다른 옵션은 무엇입니까?

+1

관계없이 통지, "현재 전경 응용 프로그램을"얻을 수'UsageStatsManager'을 사용할 수 없습니다. "참고 : 이벤트 로그의 마지막 몇 분은 응용 프로그램의 남용을 방지하기 위해 잘립니다." – CommonsWare

+0

@CommonsWare 그래, 고마워! "이벤트 로그"란 무엇입니까? – Epicality

+1

이 문서는'UsageStatsManager'를 통해 사용 가능한 데이터를 구동하는 사용 이벤트 로그를 참조한다고 가정합니다. 나는 문서를 작성하지 않았으므로 확실하게 말할 수는 없다. – CommonsWare

답변

1

당신은 전경에서 현재 응용 프로그램의 패키지 이름을 얻을 수 있습니다 :

private String isAppOnForeground(Context context) { 
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); 
    if (appProcesses == null) { 
     return null; 
    } 

    for (RunningAppProcessInfo appProcess : appProcesses) { 
     if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
     return appProcess.processName; 
     } 
    } 
    return null; 
    } 
+0

그래, 명확하게하기 위해, 이것은 알림 팝업을 제외합니까? – Epicality

+0

이 목록은 내 앱의 패키지 이름 만 반환합니다. 그러나 많은 연구를 한 후에 Google이 기본적으로 모든 데이터를 액세스한다는 사실을 깨달았습니다. 귀하의 대답은 최고이므로 적절하게 표시했습니다. – Epicality

관련 문제