我发现这种方式扩展了通知面板
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方法来折叠通知
但我找不到任何方法来检测通知面板状态
因为我想检查它是打开还是关闭,然后决定我应该打开它还是关闭它
我怎么知道这个状态?
答案 0 :(得分:0)
虽然已经很晚了,但可能会对某人有所帮助
请参阅this
您可以使用以下方法来检测通知面板拉动,
在清单文件中
<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(); } } }