Android, как узнать, какое приложение открыто в любой момент - PullRequest
3 голосов
/ 13 марта 2012

В моем приложении я хочу показать сообщение с помощью BroadcastReceiver, но я хочу, чтобы оно отображало всплывающее сообщение, только когда приложение не открыто и в данный момент работает на экране (оно может работать в фоновом режиме). Но я не нахожу точный код для реализации условия соответственно.

Я пробовал код,

    ActivityManager manager = 
        (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> processes = manager.getRunningAppProcesses();

но оно останавливает сообщение и при запуске другого приложения.

Пожалуйста, помогите, как я могу сообщить своему коду о том, открыто приложение в настоящее время или нет? Спасибо.

1 Ответ

0 голосов
/ 13 марта 2012

С учетом этого ответа и, соответственно, cyanogenmod 7.

Ты на полпути. RunningAppProcessInfo имеет поле с именем pkgList, String [], которое содержит все имена пакетов в процессе, с которыми можно сопоставить, чтобы определить, является ли оно вашим приложением.

private RunningAppProcessInfo getForegroundApp() {
    RunningAppProcessInfo result=null, info=null;

    if(mActivityManager==null)
        mActivityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
    List <RunningAppProcessInfo> l = mActivityManager.getRunningAppProcesses();
    Iterator <RunningAppProcessInfo> i = l.iterator();
    while(i.hasNext()){
        info = i.next();
        if(info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND
                && !isRunningService(info.processName)){
            result=info;
            break;
        }
    }
    return result;

}

...