我找到了这个方法来展开通知面板
Object sbservice = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method showsb;
if (Build.VERSION.SDK_INT >= 17) {
showsb = statusbarManager.getMethod("expandNotificationsPanel");
} else {
showsb = statusbarManager.getMethod("expand");
}
showsb.invoke(sbservice);
查看源代码后,我还发现了折叠通知的collapsePanels方法
但是我找不到任何方法来检测通知面板状态
因为我想检查它是打开还是关闭,然后决定是打开还是关闭
我怎么知道这个状态?
虽然很晚了,但它可能会帮助某人
参考
你可以使用下面的方法来检测通知面板拉,
manifest文件
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
在你的活动覆盖onWindowFocusChanged(),并写入下面的代码。
使用
权限@Override public void onWindowFocusChanged(boolean hasFocus) { try { if(!hasFocus) { Object service = getSystemService("statusbar"); Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); Method collapse = statusbarManager.getMethod("collapse"); collapse .setAccessible(true); collapse .invoke(service); } } catch(Exception ex) { if(!hasFocus) { try { Object service = getSystemService("statusbar"); Class<?> statusbarManager = Class.forName("android.app.StatusBarManager"); Method collapse = statusbarManager.getMethod("collapse"); collapse .setAccessible(true); collapse .invoke(service); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } ex.printStackTrace(); } } }