最近接到一个需求,需要在应用内打开通知中心(StatsuBar)。查了一下资料发现需要用到StatsuBarManagr来操作StatsuBar。但是在使用过程中发现,StatsuBarManagr是非公开的API,我们无法直接获取,所以只有借助反射来实现打开StatusBar。
废话不多说,直接上代码:
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();
}
}