最近接到一个需求,需要在应用内打开通知中心(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();
- }
- }