2017-02-15 57 views
0

我目前使用Android UsageStats來獲取當前的前臺應用程序在android中的服務。但是,當我從任何應用程序收到通知時,我的應用程序認爲其他應用程序處於前臺。 「噢,這是一個鼻屎鍵入」如何在Android上獲取前臺應用程序;不包括通知

基本上,我需要一種方式獲取當前的前臺應用程序,排除任何通知。

Got it?謝謝!

編輯:

如果我的要求是不可能的,我目前的方法,我有哪些其他選擇?

+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

相關問題