如何在Android OS 3.0及更高版本中隐藏通知抽屉?

时间:2014-02-10 13:06:27

标签: android notifications android-remoteview

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

但是对于使用Remote-view的OS 3.0及更高版本,我们有3种不同 按钮以执行相应的操作。通过打开通知 抽屉我们可以点击任何按钮来执行操作。

默认情况下,按钮单击后,通知抽屉不会运行 up(或Hide)。有没有办法隐藏通知抽屉 编程盟友。请帮帮我。

2 个答案:

答案 0 :(得分:0)

您使用的是

NotificationManager mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNM.cancelAll();

答案 1 :(得分:0)

我使用以下代码修复了该问题。 但不建议使用此功能。 这可以通过反射来实现。 将来这可能会被弃用。

void collapseStatusBar(Context context){     //访问系统状态栏。这可能不是公开的     //将来弃用     对象服务= 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();
    }
}

}