2017-02-15 2 views
0

В настоящее время я использую Android UsageStats, чтобы получить текущее приложение переднего плана в android внутри службы. Однако, когда я получаю уведомление от любого приложения, мое приложение считает, что другое приложение находится на переднем плане. «Мусор, это был бугер типа»Как получить приложение foreground на Android; Исключение уведомлений

В принципе, мне нужен способ получить текущее приложение переднего плана, исключая любые уведомления.

Есть? Благодаря!

EDIT:

Если мой запрос не представляется возможным с моим текущим методом, каковы мои другие варианты?

+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

Смежные вопросы