最近有個需求,點擊通知欄RemoteView中的按鈕後要收起通知欄,系統默認是不自動收起的,不過沒有找到公開的API能夠控制通知欄。android
在android.app.StatusBarManager裏提供了顯示和收縮通知欄的方法,可是這個類沒有公開,經過反射能夠調用。app
須要注意的是API LEVEL>16後,對應的方法名稱改變了。ui
使用此方法時須要再AndroidManifest.xml中添加以下權限spa
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />code
private void collapseStatusBar() { int currentApiVersion = android.os.Build.VERSION.SDK_INT; try { Object service = getSystemService("statusbar"); Class<?> statusbarManager = Class .forName("android.app.StatusBarManager"); Method collapse = null; if (service != null) { if (currentApiVersion <= 16) { collapse = statusbarManager.getMethod("collapse"); } else { collapse = statusbarManager.getMethod("collapsePanels"); } collapse.setAccessible(true); collapse.invoke(service); } } catch (Exception e) { e.printStackTrace(); } }