I am using below code in MainActivity.
//Global Declaration Handler collapseNotificationHandler; @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); Log.d(tag, "window focus changed"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { collapseNow(); } }
Collapse Method
public void collapseNow() { try { // Initialize 'collapseNotificationHandler' if (collapseNotificationHandler == null) { collapseNotificationHandler = new Handler(); } // Post a Runnable with some delay - currently set to 300 ms collapseNotificationHandler.postDelayed(new Runnable() { @Override public void run() { // Use reflection to trigger a method from 'StatusBarManager' Object statusBarService = getSystemService("statusbar"); Class<?> statusBarManager = null; try { statusBarManager = Class.forName("android.app.StatusBarManager"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Method collapseStatusBar = null; try { // Prior to API 17, the method to call is 'collapse()' // API 17 onwards, the method to call is `collapsePanels()` if (Build.VERSION.SDK_INT > 16) { collapseStatusBar = statusBarManager.getMethod("collapsePanels"); } else { collapseStatusBar = statusBarManager.getMethod("collapse"); } } catch (NoSuchMethodException e) { e.printStackTrace(); } collapseStatusBar.setAccessible(true); try { collapseStatusBar.invoke(statusBarService); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } // Currently, the delay is 10 ms. You can change this // value to suit your needs. collapseNotificationHandler.postDelayed(this, 10L); } }, 10L); } catch (Exception e) { e.printStackTrace(); } }