Android: Как узнать, открыта ли уже панель уведомлений программно?

Я хотел знать, есть ли способ узнать, открыта ли панель уведомлений. У меня есть приведенный ниже код, чтобы открыть панель уведомлений из программы:

Object sbservice = getSystemService( "statusbar" );
Class<?> statusbarManager = Class.forName( "android.app.StatusBarManager" );
Method showsb;
if (Build.VERSION.SDK_INT >= 17) {
    showsb = statusbarManager.getMethod("expandNotificationsPanel");
}
else {
    showsb = statusbarManager.getMethod("expand");
}
showsb.invoke( sbservice );

Есть ли способ узнать, открыта ли панель?


person user2349990    schedule 22.08.2013    source источник
comment
Проверьте это для рабочего решения: «как определить, когда открыта системная панель уведомлений»> stackoverflow.com/questions/53509108/   -  person The Hungry Androider    schedule 28.11.2018


Ответы (1)


Добавьте в Activity следующее:

@Override public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    // if hasFocus is false, notification panel is open.
}

Документация по этой функции находится здесь.

person Chris Lacy    schedule 19.10.2016
comment
Это отчасти правильно. Системный диалог, такой как диалог «Выключение и перезагрузка», также может привести к тому, что ваше окно потеряет фокус. - person Run; 18.09.2018