最近接到一个需求,需要在应用内打开通知中心(StatsuBar)。查了一下资料发现需要用到StatsuBarManagr来操作StatsuBar。但是在使用过程中发现,StatsuBarManagr是非公开的API,我们无法直接获取,所以只有借助反射来实现打开StatusBar。
废话不多说,直接上代码:
1、在AndroidManifes.xml文件里添加权限: <uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
expandNotificationsPanel打开通知栏 expandSettingsPanel 打开设置栏
collapseNotificationsPanel 收起通知栏
public static void openStatusBar(Context context) { try { Object sbsService = context.getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method expandMethod; if (Build.VERSION.SDK_INT >= 17) { expandMethod = statusBarManager.getMethod("expandNotificationsPanel"); } else { expandMethod = statusBarManager.getMethod("expand"); } expandMethod.invoke(sbsService); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }