如何检测通知面板是否展开



我找到了这个方法来展开通知面板

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();
    }
} }

相关内容

  • 没有找到相关文章

最新更新