0

我正在开发具有支持 2.3.3 及以上操作系统版本的通知系统的应用程序。在小于 3 的 android OS 中,我们可以选择设置内容意图。整个通知区域都可以单击。

但是对于 OS 3.0 及更高版本,通过使用远程视图,我们有 3 个不同的按钮来执行相应的操作。通过打开通知抽屉,我们可以单击任何按钮来执行操作。

默认情况下单击按钮后,通知抽屉不会上升(或隐藏)。有没有办法以编程方式隐藏通知抽屉。请帮助我。

4

2 回答 2

0

你在使用类似的东西

NotificationManager mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNM.cancelAll();
于 2014-02-10T23:10:18.933 回答
0

我用以下代码段解决了这个问题。但是不推荐使用这个。这可以在反射的帮助下实现。将来这可能会被弃用。

void collapseStatusBar(Context context) { // 访问系统状态栏。这不是公开的,所以将来可能会被弃用 Object service = context.getSystemService("statusbar");

Class<?> statusbarManager = null;

try {
    statusbarManager = Class.forName("android.app.StatusBarManager");
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.getMessage();
}

// Till 4.1 (JB), StatusBarManager collapse method did the job but from
// 4.2 it's been
// changed to collpasePanels, so perform the job accordingly
if (Build.VERSION.SDK_INT <= 16) {
    Method collapseMethod = null;

    try {
        collapseMethod = statusbarManager.getMethod("collapse");
    } catch (NoSuchMethodException e) {
        e.getMessage();
    }

    collapseMethod.setAccessible(true);

    try {
        collapseMethod.invoke(service);
    } catch (IllegalArgumentException e) {
        e.getMessage();
    } catch (IllegalAccessException e) {
        e.getMessage();
    } catch (InvocationTargetException e) {
        e.getMessage();
    }
} else {
    Method collapsePanelsMethod = null;

    try {
        collapsePanelsMethod = statusbarManager
                .getMethod("collapsePanels");
    } catch (NoSuchMethodException e1) {
        e1.getMessage();
    }

    collapsePanelsMethod.setAccessible(true);

    try {
        collapsePanelsMethod.invoke(service);
    } catch (IllegalArgumentException e) {
        e.getMessage();
    } catch (IllegalAccessException e) {
        e.getMessage();
    } catch (InvocationTargetException e) {
        e.getMessage();
    }
}

}

于 2014-02-14T07:45:53.267 回答